कुछ लोग इस प्रश्न के कई उत्तरों के बावजूद प्रकट होते हैं, उन्होंने कहा कि शब्दकोशों अन-ऑर्डर किए गए मैपिंग हैं, और इसलिए (पायथन 3.7 के साथ सम्मिलन आदेश का आशीर्वाद तक) एक शब्दकोश में "पहले" प्रविष्टि का विचार शाब्दिक रूप से बनाया गया है। कोई मतलब नहीं। और यहां तक कि OrderedDictकेवल संख्यात्मक सूचकांक द्वारा इस तरह के कुरूपता के रूप में उपयोग किया जा सकता है mydict[mydict.keys()[0]](केवल पायथन 2 के रूप में, क्योंकि पायथन 3 keys()एक गैर-उपप्रकार इट्रेटर है।)
3.7 से आगे practice और ३,६ अभ्यास में - तब भी नया व्यवहार पेश किया गया था, लेकिन ३.९ तक भाषा विनिर्देश के हिस्से के रूप में शामिल नहीं किया गया था - एक तानाशाही की कुंजियों, मूल्यों या वस्तुओं पर पुनरावृत्ति (और, मेरा मानना है, सेट भी) सबसे कम-हाल ही में सम्मिलित वस्तुओं को पहले प्राप्त करेगा। सम्मिलन के संख्यात्मक सूचकांक द्वारा उन्हें एक्सेस करने का कोई सरल तरीका अभी भी नहीं है।
आइटम के चयन और "स्वरूपण" के प्रश्न के रूप में, यदि आप उस कुंजी को जानते हैं जिसे आप शब्दकोश में प्राप्त करना चाहते हैं तो आप सामान्य रूप से इसे पुनः प्राप्त करने के लिए एक सबस्क्रिप्ट के रूप में कुंजी का उपयोग करेंगे ( my_var = mydict['Apple'])।
यदि आप वास्तव में एंट्री नंबर द्वारा वस्तुओं को अनुक्रमित करने में सक्षम होना चाहते हैं (इस तथ्य को अनदेखा करते हुए कि प्रविष्टि के रूप में एक विशेष प्रविष्टि का नंबर बदल जाएगा) तो उपयुक्त संरचना संभवतः दो-तत्व ट्यूपल्स की सूची होगी। के बजाय
mydict = {
'Apple': {'American':'16', 'Mexican':10, 'Chinese':5},
'Grapes':{'Arabian':'25','Indian':'20'} }
आप उपयोग कर सकते हैं:
mylist = [
('Apple', {'American':'16', 'Mexican':10, 'Chinese':5}),
('Grapes', {'Arabian': '25', 'Indian': '20'}
]
इस शासन के तहत पहली प्रविष्टि mylist[0]क्लासिक सूची-एंडेक्सेड रूप में है, और इसका मूल्य है ('Apple', {'American':'16', 'Mexican':10, 'Chinese':5})। आप पूरी सूची पर निम्नानुसार पुनरावृति कर सकते हैं:
for (key, value) in mylist: # unpacks to avoid tuple indexing
if key == 'Apple':
if 'American' in value:
print(value['American'])
लेकिन अगर आपको पता है कि आप "Apple" कुंजी की तलाश कर रहे हैं, तो आप इसके बजाय सिर्फ एक तानाशाही का उपयोग क्यों नहीं करेंगे?
आप चाबियों की सूची को कैश करके अप्रत्यक्ष स्तर का एक अतिरिक्त स्तर पेश कर सकते हैं, लेकिन दो डेटा संरचनाओं को सिंक्रोनाइज़ेशन में रखने की जटिलता अनिवार्य रूप से आपके कोड की जटिलता को जोड़ देगी।