2015-12-16 10 views
9

मुझे लगता है कि यह बहुत आसान है और मैं समाधान के करीब हूं, लेकिन मुझे ढेर हो गया, और इंटरनेट में सुझाव नहीं मिला।तारों की सूची से विभाजित तारों से शब्दकोश बनाएं

my_list = ['[email protected]', '[email protected]', '[email protected]'] 

सामान्य में, सूची के प्रत्येक तत्व रूप है: [email protected]_number
मैं सूची ऐसा दिखता है जैसे की है।
मैं सुंदर तरीके से शब्दकोश बनाना चाहता हूं, जिसमें key = namex और value = some_number है। मैं इसे कर सकता हूं:

md = {} 
for item in arguments: 
    md[item.split('@')[0]] = item.split('@')[1] 

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

md2 = dict((k,v) for k,v in item.split('@') for item in arguments) 

हालांकि, मुझे त्रुटि मिल रही है: ValueError: too many values to unpack। इस बारे में कोई जानकारी नहीं है कि इससे कैसे बाहर निकलना है।

उत्तर

15

आप वास्तव में टपल

>>> my_list = ['[email protected]', '[email protected]', '[email protected]'] 
>>> dict(i.split('@') for i in my_list) 
{'name3': '3333', 'name1': '1111', 'name2': '2222'} 
+0

यह बहुत अच्छा है, धन्यवाद बनाने के अतिरिक्त कदम की जरूरत नहीं है !. ऐसा लगता है कि मैंने इसे जटिल तरीके से भी करने की कोशिश की है। –

संबंधित मुद्दे