Indem ich über eine Python-Liste iteriere, möchte ich Listenwörterbücher erstellen, wobei der Wert jedes Wörterbuchs auch eine Liste ist.Wie erstelle ich eine Liste von Wörterbüchern (mit Listenwerten) aus einer Liste?
würde die Struktur sein:
[{key1: [val1, val2]}, {key2: [val3, val4]}, {key3: [val5, val6]}, ...]
ich mit einer Liste von ganzen Zahlen beginnen:
my_list = [3423, 77813, 12, 153, 1899]
Für jedes Element in der Liste, soll dies ein Wörterbuch Schlüssel werden. Ich füge dann zwei Elemente an den Wert des Wörterbuchs an (was eine Liste ist). (Lassen Sie uns sagen, dass die beiden Elemente sind immer „Hund“ und „Katze“)
Hier ist, was das Endergebnis aussehen soll:
[{3423:['dog', 'cat']}, {77813:['dog', 'cat']}, {12:['dog', 'cat']},
{153:['dog', 'cat']}, {1899:['dog', 'cat']}]
Mein Versuch, dies zu tun, hat viele Probleme:
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
Ich mag es nicht, dass ich ein leeres Wörterbuch benennen muss, und haben sie jeweils das gleiche benannt (hier,
d
). Später würde ich gerne auf jedes dieser Wörterbücher mit den Schlüsseln zugreifen. Ihre Namen interessieren mich nicht.Ich weiß nicht, wie sinnvoll mehrere Elemente an den Wörterbuchwert angehängt werden, wenn es eigentlich eine Liste sein soll. Was, wenn ich mehrere Artikel hinzufügen möchte?
Der Fehler hängt das Wörterbuch an die ursprüngliche Liste an und löscht dann das Element. Natürlich kann dies mit einer neuen Liste gelöst werden:
new_list = [] for i in my_list: d = {} d[i] = [].append('dog') new_list.append(d) my_list.remove(i)
aber das fühlt sich sehr ungeschickt.
Müssen Sie diese Struktur verwenden, um Ihr Ziel zu erreichen? Ein objektorientierter Ansatz könnte je nach dem, was Sie erreichen möchten, einen Teil der Komplexität verringern. Zumindest könntest du '' defaultdict'' im '' collections''-Modul betrachten. Dann könnten Sie '' list_dict = defaultdict (list) '' machen, damit Sie wissen, dass jeder Eintrag im dict bereits eine leere Liste ist. –