एक लाइनर: सूचियों से चाबियों के रूप में सूची से एक शब्दकोश बनाना


91

मैं दी गई सूची में से केवल एक पंक्ति में एक शब्दकोश बनाना चाहता हूं । शब्दकोश की कुंजी सूचकांकों होगी, और मूल्य सूची के तत्व होंगे। कुछ इस तरह:

a = [51,27,13,56]         #given list

d = one-line-statement    #one line statement to create dictionary

print(d)

आउटपुट:

{0:51, 1:27, 2:13, 3:56}

मुझे कोई विशिष्ट आवश्यकता नहीं है क्योंकि मैं एक पंक्ति क्यों चाहता हूं । मैं सिर्फ अजगर तलाश रहा हूं, और सोच रहा हूं कि क्या यह संभव है।


3
आपको क्या लगता है कि आप इस शब्दकोश को प्राप्त कर सकते हैं इंडेक्स लुकअप किसी शब्दकोश के साथ तेज़ नहीं होगा।
मार्टिज़न पीटर्स

@MartijnPieters: ठीक है, मुझे इसकी आवश्यकता हो सकती है, जैसे: यह {[x[0]:51, x[1]:27, x[2]:13, x[3]:56}
नवाज

3
फिर बस का उपयोग zip(): dict(zip(x, a))
मार्टिन पीटर्स

जवाबों:


158
a = [51,27,13,56]
b = dict(enumerate(a))
print(b)

उत्पादन करेंगे

{0: 51, 1: 27, 2: 13, 3: 56}

enumerate(sequence, start=0)

एक enumerate ऑब्जेक्ट लौटें। अनुक्रम एक दृश्य, एक होना चाहिए इटरेटर , या किसी अन्य वस्तु जो यात्रा का समर्थन करता है। next()इटरेटर द्वारा वापस की विधि enumerate()रिटर्न एक tuple(से गिनती युक्त शुरू जो 0 पर चूक) और मूल्यों पर पुनरावृत्ति से प्राप्त अनुक्रम :


2
@ जमालिक लेकिन आपको हटाने की कोई जरूरत नहीं है। लोग जान सकते थे count()...
glglgl

@glglgl इसे करने का एक तरीका होना चाहिए;)
जमीलाक

मुझे 2 minuts से हराया :)
jcr

48

एक और कंस्ट्रक्टर के साथ, आपके पास है

a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)

7
@StefanoSanfilippo डिक्ट और सेट कॉम्प्रिहेंशन को Python 2.7 में वापस भेज दिया गया।
केविंग्स्नर

मुझे सही साबित होना है। फिर भी, याद रखें कि यह पिछले पायथन 2 संस्करणों पर लागू नहीं होता है।
स्टेफानो सैनफिलिपो

14

कोशिश करें enumerate: यह ट्यूपल्स की एक सूची (या पुनरावृत्त) लौटाएगा (i, a[i]), जिसमें से आप एक निर्माण कर सकते हैं dict:

a = [51,27,13,56]  
b = dict(enumerate(a))
print b


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.