मेरे पास एक शब्दकोश नीचे है:
colors = {
"blue" : "5",
"red" : "6",
"yellow" : "8",
}
मैं शब्दकोश में पहली प्रविष्टि को कैसे अनुक्रमित करूं?
colors[0]
KeyError
स्पष्ट कारणों के लिए वापस आ जाएगा ।
मेरे पास एक शब्दकोश नीचे है:
colors = {
"blue" : "5",
"red" : "6",
"yellow" : "8",
}
मैं शब्दकोश में पहली प्रविष्टि को कैसे अनुक्रमित करूं?
colors[0]
KeyError
स्पष्ट कारणों के लिए वापस आ जाएगा ।
जवाबों:
पाइथॉन संस्करणों में डिक्शनरी अनियंत्रित हैं और पाइथन 3.6 सहित। यदि आप प्रविष्टियों के क्रम की परवाह नहीं करते हैं और किसी भी तरह इंडेक्स द्वारा कुंजियों या मूल्यों का उपयोग करना चाहते हैं, तो आप उपयोग कर सकते हैं d.keys()[i]
और d.values()[i]
या d.items()[i]
। (ध्यान दें कि ये विधियाँ पाइथन 2.x में सभी कुंजियों, मूल्यों या वस्तुओं की एक सूची बनाती हैं। इसलिए यदि आपको उनकी अधिक आवश्यकता है, तो एक बार, प्रदर्शन में सुधार करने के लिए सूची को एक चर में संग्रहीत करें।)
यदि आप प्रविष्टियों के क्रम के बारे में परवाह करते हैं, तो पायथन 2.7 से शुरू करके आप इसका उपयोग कर सकते हैं collections.OrderedDict
। या जोड़े की सूची का उपयोग करें
l = [("blue", "5"), ("red", "6"), ("yellow", "8")]
यदि आपको कुंजी द्वारा पहुँच की आवश्यकता नहीं है। (वैसे आपके नंबर तार क्यों हैं?)
पायथॉन 3.7 में, सामान्य शब्दकोशों का आदेश दिया जाता है, इसलिए आपको OrderedDict
अब और उपयोग करने की आवश्यकता नहीं है (लेकिन आप अभी भी कर सकते हैं - यह मूल रूप से एक ही प्रकार है)। पायथन 3.6 के CPython कार्यान्वयन में पहले से ही वह परिवर्तन शामिल था, लेकिन चूंकि यह भाषा विनिर्देश का हिस्सा नहीं है, आप पायथन 3.6 में इस पर भरोसा नहीं कर सकते।
d.iterkeys().next()
बजाय उपयोग करें d.keys()[0]
। यदि शब्दकोश बहुत बड़ा है, तो यह प्रदर्शन के मामले में एक बड़ा बदलाव करेगा। मूल्यों और वस्तुओं के लिए समान है। पाइथन 2.7 में आप
यदि कोई अभी भी इस प्रश्न को देख रहा है, तो वर्तमान में स्वीकृत उत्तर अब पुराना हो गया है:
चूंकि Python 3.7 * डिक्शनरी -प्रोटेक्शन हैं , इसलिए वे अब वैसा ही व्यवहार करते हैं जैसा कि कभी collections.OrderedDict
किया जाता था। दुर्भाग्यवश, अभी भी शब्दकोश के keys()
/ में अनुक्रमित करने के लिए कोई समर्पित तरीका नहीं है values()
, इसलिए शब्दकोश में पहली कुंजी / मूल्य प्राप्त किया जा सकता है:
first_key = list(colors)[0]
first_val = list(colors.values())[0]
या वैकल्पिक रूप से (यह सूची में कुंजियों को देखने से तत्काल बचता है):
def get_first_key(dictionary):
for key in dictionary:
return key
raise IndexError
first_key = get_first_key(colors)
first_val = colors[first_key]
यदि आपको n
-th कुंजी की आवश्यकता है , तो इसी तरह
def get_nth_key(dictionary, n=0):
if n < 0:
n += len(dictionary)
for i, key in enumerate(dictionary.keys()):
if i == n:
return key
raise IndexError("dictionary index out of range")
(* CPython 3.6 में पहले से ही ऑर्डर किए गए डीकट्स शामिल हैं, लेकिन यह केवल एक कार्यान्वयन विवरण था। भाषा विनिर्देश में 3.7 से आगे की ओर ऑर्डर किए गए डीकट्स शामिल हैं।)
शब्दकोश का एक तत्व संबोधित करना गधे पर बैठने और सवारी का आनंद लेने जैसा है।
अजगर के नियम के रूप में नियम क्रमहीन है
अगर वहाँ है
dic = {1: "a", 2: "aa", 3: "aaa"}
अब मान लीजिये अगर मैं पसंद करता हूँ dic[10] = "b"
, तो यह हमेशा इस तरह नहीं जोड़ेगा
dic = {1:"a",2:"aa",3:"aaa",10:"b"}
ऐसा हो सकता है
dic = {1: "a", 2: "aa", 3: "aaa", 10: "b"}
या
dic = {1: "a", 2: "aa", 10: "b", 3: "aaa"}
या
dic = {1: "a", 10: "b", 2: "aa", 3: "aaa"}
या ऐसा कोई संयोजन।
अंगूठे का नियम तो है DICTIONARY है अव्यवस्थित !
यदि आपको एक आदेशित शब्दकोश की आवश्यकता है, तो आप odict का उपयोग कर सकते हैं ।
वास्तव में मुझे एक उपन्यास समाधान मिला जिसने वास्तव में मेरी मदद की, यदि आप विशेष रूप से किसी सूची या डेटा सेट में एक निश्चित मूल्य के सूचकांक से संबंधित हैं, तो आप केवल उस सूचकांक में शब्दकोश का मूल्य निर्धारित कर सकते हैं !:
बस देखो:
list = ['a', 'b', 'c']
dictionary = {}
counter = 0
for i in list:
dictionary[i] = counter
counter += 1
print(dictionary) # dictionary = {'a':0, 'b':1, 'c':2}
अब हैशमैप की शक्ति के माध्यम से आप निरंतर समय में अपनी प्रविष्टियों को अनुक्रमणित कर सकते हैं (उर्फ पूरी तेजी से)
ओह, यह एक कठिन है। आपके पास यहां क्या है, मूल रूप से, प्रत्येक आइटम के लिए दो मूल्य हैं। फिर आप उन्हें कुंजी के रूप में एक संख्या के साथ कॉल करने का प्रयास कर रहे हैं। दुर्भाग्य से, आपका एक मान पहले से ही कुंजी के रूप में सेट है!
इसे इस्तेमाल करे:
colors = {1: ["blue", "5"], 2: ["red", "6"], 3: ["yellow", "8"]}
अब आप चाबियों को संख्या द्वारा कॉल कर सकते हैं जैसे कि उन्हें सूची की तरह अनुक्रमित किया जाता है। आप सूची के भीतर उनकी स्थिति के अनुसार रंग और संख्या को भी संदर्भित कर सकते हैं।
उदाहरण के लिए,
colors[1][0]
// returns 'blue'
colors[3][1]
// returns '8'
बेशक, आपको प्रत्येक रंग में किस स्थान पर नज़र रखने का एक और तरीका आना होगा। हो सकता है कि आपके पास एक और शब्दकोष हो जो प्रत्येक रंग की कुंजी को संग्रहीत करता है क्योंकि यह मूल्य है।
color_key = {'blue': 1, 'red': 6, 'yllow': 8}
फिर, यदि आपको आवश्यकता है तो आप रंगों की कुंजी भी देख पाएंगे।
रंग [color_key ['blue']] [0] 'नीला' लौटाएगा
ऐसा कुछ।
और फिर, जब आप उस पर होते हैं, तो आप संख्या मान के साथ एक कुंजी को कुंजी के रूप में बना सकते हैं ताकि आप हमेशा अपने रंगों को देखने के लिए उनका उपयोग कर सकें, आपको पता है, अगर आपको ज़रूरत है।
मान = {5: [1, 'नीला'], 6: [2, 'लाल'], 8: [3, 'लाल' '}}
फिर, (रंग [color_key [मान [५] [१]]] [०]) 'नीला' लौटाएगा।
या आप सूचियों की एक सूची का उपयोग कर सकते हैं।
सौभाग्य!
आप dict
अनियंत्रित नहीं हैं। आप .popitem()
एक मनमाना आइटम प्राप्त करने के लिए उपयोग कर सकते हैं , लेकिन यह इसे हुक से हटा देगा।