Saya ingin membuat kamus yang nilainya daftar. Sebagai contoh:
{
1: ['1'],
2: ['1','2'],
3: ['2']
}
Jika aku melakukan:
d = dict()
a = ['1', '2']
for i in a:
for j in range(int(i), int(i) + 2):
d[j].append(i)
Saya mendapatkan KeyError, karena d [...] bukan daftar. Dalam hal ini, saya dapat menambahkan kode berikut setelah penugasan a untuk menginisialisasi kamus.
for x in range(1, 4):
d[x] = list()
Apakah ada cara yang lebih baik untuk melakukan ini? Katakanlah saya tidak tahu kunci yang akan saya butuhkan sampai saya berada di forloop kedua . Sebagai contoh:
class relation:
scope_list = list()
...
d = dict()
for relation in relation_list:
for scope_item in relation.scope_list:
d[scope_item].append(relation)
Alternatif kemudian akan diganti
d[scope_item].append(relation)
dengan
if d.has_key(scope_item):
d[scope_item].append(relation)
else:
d[scope_item] = [relation,]
Apa cara terbaik untuk menangani ini? Idealnya, menambahkan akan "hanya berfungsi". Apakah ada cara untuk menyatakan bahwa saya ingin kamus daftar kosong, bahkan jika saya tidak tahu setiap kunci ketika saya pertama kali membuat daftar?
collectionsmodul juga bekerja dengan cara ini, misalnyacollections.OrderedDict.