एक अजगर सूची में पुनरावृत्ति करके, मैं एक सूची शब्दकोश बनाना चाहता हूं, जिससे प्रत्येक शब्दकोश का मूल्य भी एक सूची है।किसी सूची से शब्दकोशों (सूची मूल्यों के साथ) की सूची कैसे उत्पन्न करें?
संरचना होगा:
[{key1: [val1, val2]}, {key2: [val3, val4]}, {key3: [val5, val6]}, ...]
मैं पूर्णांकों की एक सूची के साथ शुरू:
my_list = [3423, 77813, 12, 153, 1899]
सूची में प्रत्येक तत्व के लिए, यह एक शब्दकोश कुंजी बन जाना चाहिए। मैं फिर दो वस्तुओं को शब्दकोश के मूल्य में जोड़ता हूं (जो एक सूची है)।
[{3423:['dog', 'cat']}, {77813:['dog', 'cat']}, {12:['dog', 'cat']},
{153:['dog', 'cat']}, {1899:['dog', 'cat']}]
यह करने के लिए मेरे प्रयास है कई समस्याओं:
for i in my_list:
d = {} ## create a dictionary 'd'
d[i] = [].append('dog') ## or `d[i] = ['dog'].append('cat')`
my_list.append(d) ## here is a bug
my_list.remove(i) ## remove the item from the list
यहाँ अंतिम परिणाम दिखाई देते हैं यह चाहिए (मान लीजिए कि दो आइटम हमेशा "कुत्ता" और "cat" कर रहे हैं चलो)
मुझे पसंद नहीं है मैं एक खाली शब्दकोश नाम के लिए है, और प्रत्येक एक ही बात नामित (यहाँ,
d
) उन्हें है। बाद में, मैं इन सभी शब्दकोशों को चाबियों से एक्सेस करना चाहता हूं --- मुझे उनके नामों की परवाह नहीं है।मुझे नहीं पता कि यह वास्तव में एक सूची होने पर शब्द मूल्य में एकाधिक वस्तुओं को कैसे जोड़ना है। अगर मैं कई वस्तुओं को जोड़ना चाहता हूं तो क्या होगा?
बग मूल सूची में शब्दकोश को जोड़ रहा है और फिर आइटम को हटा रहा है। जाहिर है, इस नई सूची से हल किया जा सकता:
new_list = [] for i in my_list: d = {} d[i] = [].append('dog') new_list.append(d) my_list.remove(i)
लेकिन यह बहुत ही अनाड़ी लगता है।
क्या आपको अपने लक्ष्य तक पहुंचने के लिए इस संरचना का उपयोग करना है? आप जो हासिल करने की कोशिश कर रहे हैं उसके आधार पर एक ऑब्जेक्ट उन्मुख दृष्टिकोण कुछ जटिलता को कम कर सकता है। कम से कम आप 'संग्रह''-मॉड्यूल में' डिफ़ॉल्ट डिफॉल्ट'' पर एक नज़र डाल सकते हैं। फिर आप '' list_dict = defaultdict (list) '' कर सकते हैं, ताकि आप जान सकें कि dict में प्रत्येक प्रविष्टि पहले से ही एक खाली सूची है। –