मैं एक ऐसा शब्दकोश बनाना चाहता हूँ, जिसके मूल्य सूचियाँ हों। उदाहरण के लिए:
{
1: ['1'],
2: ['1','2'],
3: ['2']
}
यदि मैं करता हूँ:
d = dict()
a = ['1', '2']
for i in a:
for j in range(int(i), int(i) + 2):
d[j].append(i)
मुझे एक KeyError मिलती है, क्योंकि d [...] एक सूची नहीं है। इस मामले में, मैं शब्दकोश को आरंभ करने के लिए असाइनमेंट के बाद निम्नलिखित कोड जोड़ सकता हूं।
for x in range(1, 4):
d[x] = list()
क्या ऐसा करने के लिए इससे अच्छा तरीका है? आइए बताते हैं कि जब तक मैं दूसरे forलूप में हूं, मुझे उन चाबियों की जानकारी नहीं है जिनकी मुझे जरूरत है । उदाहरण के लिए:
class relation:
scope_list = list()
...
d = dict()
for relation in relation_list:
for scope_item in relation.scope_list:
d[scope_item].append(relation)
एक विकल्प फिर जगह ले जाएगा
d[scope_item].append(relation)
साथ में
if d.has_key(scope_item):
d[scope_item].append(relation)
else:
d[scope_item] = [relation,]
इसे संभालने का सबसे अच्छा तरीका क्या है? आदर्श रूप से, "बस काम" करना होगा। क्या यह व्यक्त करने का कोई तरीका है कि मुझे खाली सूचियों का शब्दकोश चाहिए, भले ही मुझे सूची बनाते समय हर कुंजी का पता न हो?
collectionsमॉड्यूल के तहत अन्य शब्दकोश भी इस तरह से काम करते हैं, उदाहरण के लिएcollections.OrderedDict।