मेरे पास एक असाइनमेंट है और मैं इसे बिना किसी लाभ के घंटों तक हल करने का प्रयास कर रहा हूं। शब्दकोश में किसी भी स्तर पर कागजी रिकॉर्ड पाए जा सकते हैं
मैं एक yaml फ़ाइल को पार्स करने और नेस्टेड मान प्राप्त करने का प्रयास कर रहा हूं जहां आउटपुट है output
sales highest_sales
sales.yml/sales1/paper1 Dwight
अब तक, मैं केवल अपने कोड से कुंजी और मूल्य जोड़ी प्राप्त करने में सक्षम हूं लेकिन मैं कहीं भी गया हूं। क्या कोई कृपया एक विचार छोड़ सकता है
यह YAML फ़ाइल से आउटपुट है
{'sales1': {'paper1': {'Jim': 8, 'Pam': 9, 'Dwight': 43}}, 'sales2': {'morning_sales': {'paper2': {'Jim': 10, 'Pam': 23, 'Dwight': 67, 'Michael': 12}}, 'evening_sales': {'paper3': {'Jim': 3, 'Pam': 43, 'Dwight': 67}}}, 'paper4': {'Jim': 23, 'Pam': 14, 'Dwight': 8}}
import yaml
with open(r"C:\Users\Jason\Assignments\Assignment8\sales.yml", 'r') as yamlfile:
data = yaml.load(yamlfile, Loader=yaml.FullLoader)
def iterdict(d):
for k,v in d.items():
if isinstance(v, dict):
iterdict(v)
else:
print (k,":",v)
iterdict(data)
1 उत्तर
अधिकतम मान की कुंजी operator.itemgetter
दस्तावेज़ीकरण का उपयोग करके पाई जा सकती है
आप इस कोड को आजमा सकते हैं, इसे काम करना चाहिए
import yaml
import operator
def check_max(k, v, prev_key):
try:
# To get key of maximum sale
sales = max(v.items(), key=operator.itemgetter(1))[0]
if 'sales' in sales or 'paper' in sales:
# To check if value is another dictionary
raise Exception("value is a dictionary")
print("{:38s} {:10s}".format(str(prev_key)+'/'+str(k),sales))
except:
# The value was a dictionary
for k1, v1 in v.items():
check_max(k1,v1, prev_key+'/'+str(k))
with open(r"C:\Users\Jason\Assignments\Assignment8\sales.yml", 'r') as yamlfile:
data = yaml.load(yamlfile, Loader=yaml.FullLoader)
# Formatting of data you can
# increase the value for proper formatting
print("{:38s} {:10s}".format("sales","highest_sales"))
for k,v in data.items():
check_max(k,v, 'sales.yml')
आउटपुट:
sales highest_sales
sales.yml/sales1/paper1 Dwight
sales.yml/sales2/morning_sales/paper2 Dwight
sales.yml/sales2/evening_sales/paper3 Dwight
sales.yml/paper4 Jim
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।