1734 Stimmen

Wie kann ich zwei Listen in ein Wörterbuch umwandeln?

Ich möchte sie kombinieren:

keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']

In ein einziges Wörterbuch:

{'name': 'Monty', 'age': 42, 'food': 'spam'}

21voto

Polla A. Fattah Punkte 751

Ein natürlicherer Weg ist die Verwendung des Wörterbuchverständnisses

keys = ('name', 'age', 'food')
values = ('Monty', 42, 'spam')    
dict = {keys[i]: values[i] for i in range(len(keys))}

0 Stimmen

Manchmal ist es der schnellste und manchmal der langsamste Weg zur Umwandlung in dict Objekt, warum ist das so?, danke Kumpel.

16voto

jfs Punkte 370717

Wenn Sie Schlüssel oder Werte umwandeln müssen, bevor Sie ein Wörterbuch erstellen, können Sie eine Generatorausdruck verwendet werden können. Beispiel:

>>> adict = dict((str(k), v) for k, v in zip(['a', 1, 'b'], [2, 'c', 3])) 

Sehen Sie selbst Code wie ein Pythonista: Idiomatisches Python .

15voto

kiriloff Punkte 24291

Mit Python 3.x, gilt für dict comprehensions

keys = ('name', 'age', 'food')
values = ('Monty', 42, 'spam')

dic = {k:v for k,v in zip(keys, values)}

print(dic)

Mehr dazu Diktatauffassungen hier gibt es ein Beispiel:

>>> print {i : chr(65+i) for i in range(4)}
    {0 : 'A', 1 : 'B', 2 : 'C', 3 : 'D'}

11voto

exploitprotocol Punkte 109

Für diejenigen, die einfachen Code benötigen und nicht vertraut sind mit zip :

List1 = ['This', 'is', 'a', 'list']
List2 = ['Put', 'this', 'into', 'dictionary']

Dies kann durch eine einzige Codezeile geschehen:

d = {List1[n]: List2[n] for n in range(len(List1))}

7 Stimmen

Scheitert lautstark, wenn List1 ist länger als List2

0 Stimmen

@Jean-FrançoisFabre Spielt das wirklich eine Rolle? Was ist der Grund dafür, dass wir zwei Listen mit unterschiedlicher Länge angeben sollten, um ein Wörterbuch zu erstellen?

1 Stimmen

Wahrscheinlich nicht, aber nach diesem for n in range(len(List1)) ist ein Anti-Muster

7voto

Cyd Punkte 891

Hier ist auch ein Beispiel für das Hinzufügen eines Listenwerts in Ihr Wörterbuch

list1 = ["Name", "Surname", "Age"]
list2 = [["Cyd", "JEDD", "JESS"], ["DEY", "AUDIJE", "PONGARON"], [21, 32, 47]]
dic = dict(zip(list1, list2))
print(dic)

Achten Sie immer darauf, dass Ihr "Schlüssel" (list1) immer im ersten Parameter steht.

{'Name': ['Cyd', 'JEDD', 'JESS'], 'Surname': ['DEY', 'AUDIJE', 'PONGARON'], 'Age': [21, 32, 47]}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X