शब्दकोषों की सूची


112

यहां बताया गया है कि वर्तमान में मैं पायथन में शब्दकोश के लिए टुपल्स की एक सूची परिवर्तित कर रहा हूं:

l = [('a',1),('b',2)]
h = {}
[h.update({k:v}) for k,v in l]
> [None, None]
h
> {'a': 1, 'b': 2}

क्या कोई बेहतर तरीका है? ऐसा लगता है कि ऐसा करने के लिए एक-लाइनर होना चाहिए।

जवाबों:


179

बस dict()सीधे ट्यूपल्स की सूची पर कॉल करें

>>> my_list = [('a', 1), ('b', 2)]
>>> dict(my_list)
{'a': 1, 'b': 2}

1
Derp, मुझे पता था कि इसे करने का एक सरल तरीका होगा ... रूबी के यहाँ आने से, चीजों को करने के पायथन तरीके को सीखने की कोशिश करना। धन्यवाद!
सारा वेसल

5
@ चंद्रेश यह पायथन 3 में काम करता है , इसलिए किसी भी अपडेट की आवश्यकता नहीं है।
स्वेन मार्नाच

@ SvenMarnach, यहाँ उसी कमांड का मेरा आउटपुट है जो आपने py 3.5 टर्मिनल पर लिखा है। ट्रेसबैक (सबसे हालिया कॉल अंतिम): फ़ाइल "<ipython-input-313-7bb3559567ff>", पंक्ति 1, में <मॉड्यूल> तानाशाह (my_list) टाइपError: 'Dictionary' ऑब्जेक्ट कॉल करने योग्य नहीं है
CKM

4
@ चंद्रेश का पायथन 3 से कोई लेना-देना नहीं है - ऐसा इसलिए है क्योंकि आपके पास एक चर है dict, जो इसी नाम के पायथन में निर्मित है। आपको ऐसा कभी नहीं करना चाहिए।
स्वेन मार्नाच

@SvenMarnach ओह। धन्यवाद। इसने काम कर दिया। दरअसल, मुझे वेब से कुछ कोड मिले और इसे चलाने की कोशिश की। लगता है कि लेखक ने dictचर नाम के रूप में उपयोग किया था जहां से मुझे त्रुटि मिली। एक बार फिर धन्यवाद।
CKM

23

dictनिर्माता इनपुट आप इसे (कुंजी / मान tuples) है बिल्कुल के रूप में स्वीकार करता है।

>>> l = [('a',1),('b',2)]
>>> d = dict(l)
>>> d
{'a': 1, 'b': 2}

से प्रलेखन :

उदाहरण के लिए, ये सभी {"एक": 1, "दो": 2} के बराबर एक शब्दकोश लौटाते हैं:

dict(one=1, two=2)
dict({'one': 1, 'two': 2})
dict(zip(('one', 'two'), (1, 2)))
dict([['two', 2], ['one', 1]])


7

ऐसा लगता है कि यहां सभी लोग मानते हैं कि ट्यूल की सूची में कुंजी और मूल्यों के बीच एक से एक मैपिंग है (उदाहरण के लिए इसमें शब्दकोश की डुप्लिकेट कुंजी नहीं है)। जैसा कि इस विषय पर खोज करने वाला पहला सवाल है, मैं एक और सामान्य मामले के लिए एक उत्तर देता हूं जहां हमें डुप्लिकेट से निपटना है:

mylist = [(a,1),(a,2),(b,3)]    
result = {}
for i in mylist:  
   result.setdefault(i[0],[]).append(i[1])
print(result)
>>> result = {a:[1,2], b:[3]}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.