2013-05-17 3 views
61

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

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} 

मैं कारण है कि मैं चाहता हूँ एक लाइन के बारे में कोई विशिष्ट आवश्यकताओं की जरूरत नहीं है। मैं सिर्फ अजगर की खोज कर रहा हूं, और सोच रहा हूं कि यह संभव है या नहीं।

+1

आपको लगता है कि आपको इस शब्दकोश के साथ क्या लाभ होगा? इंडेक्स लुकअप एक शब्दकोश के साथ कोई तेज़ नहीं होगा। –

+0

@MartijnPieters: ठीक है, मुझे इसकी आवश्यकता हो सकती है, उदाहरण के लिए, यह: '{[x [0]: 51, x [1]: 27, x [2]: 13, x [3]: 56}'। – Nawaz

+2

फिर बस 'ज़िप() ':' dict (ज़िप (x, ए))' का उपयोग करें। –

उत्तर

113
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() विधि देता है एक tuple और मूल्यों से अधिक अनुक्रम पुनरावृत्ति से प्राप्त (शुरू जो 0 पर चूक से) एक गिनती युक्त

+0

+1 मैं सबसे सरल चीज़ भूल गया – jamylak

+2

@jamylak लेकिन आपके को हटाने की कोई आवश्यकता नहीं है। लोग 'गिनती() ' – glglgl

+0

+1 के बारे में जान सकते थे। बहुत बढ़िया जवाब। – Nawaz

14

enumerate का प्रयास करें: यह एक सूची प्रदान करेगा tuples (i, a[i]) के (या इटरेटर), जिसमें से आप एक dict निर्माण कर सकते हैं: एक और निर्माता के साथ

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

, आप

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

ध्यान दें कि यह वाक्यविन्यास पाइथन 2 –

+6

@ स्टेफानोफैनफिलिपो डिक्ट में काम नहीं करेगा और सेट समझें पायथन 2.7 पर बैकपोर्ट की गई थीं। – kevingessner

+0

मैं सही खड़ा हूँ। फिर भी, याद रखें कि यह पिछले पायथन 2 संस्करणों पर लागू नहीं होता है। –

1

सीधे शब्दों में सूची समझ का उपयोग करें।

a = [51,27,13,56] 
b = dict([ ((i,a[i]) for i in range(len(a)) ]) 
print b 
संबंधित मुद्दे