Ich möchte ein Wörterbuch erstellen, dessen Werte Listen sind. Beispielsweise:
{
1: ['1'],
2: ['1','2'],
3: ['2']
}
Wenn ich mache:
d = dict()
a = ['1', '2']
for i in a:
for j in range(int(i), int(i) + 2):
d[j].append(i)
Ich bekomme einen KeyError, weil d [...] keine Liste ist. In diesem Fall kann ich nach der Zuweisung von a den folgenden Code hinzufügen, um das Wörterbuch zu initialisieren.
for x in range(1, 4):
d[x] = list()
Gibt es einen besseren Weg, dies zu tun? Nehmen wir an, ich kenne die Schlüssel nicht, die ich benötigen werde, bis ich in der zweiten forSchleife bin . Beispielsweise:
class relation:
scope_list = list()
...
d = dict()
for relation in relation_list:
for scope_item in relation.scope_list:
d[scope_item].append(relation)
Eine Alternative wäre dann das Ersetzen
d[scope_item].append(relation)
mit
if d.has_key(scope_item):
d[scope_item].append(relation)
else:
d[scope_item] = [relation,]
Was ist der beste Weg, um damit umzugehen? Im Idealfall würde das Anhängen "einfach funktionieren". Gibt es eine Möglichkeit auszudrücken, dass ich ein Wörterbuch mit leeren Listen möchte, auch wenn ich nicht jeden Schlüssel kenne, wenn ich die Liste zum ersten Mal erstelle?
collectionsfunktionieren beispielsweise auch andere Wörterbücher unter dem Modulcollections.OrderedDict.