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'}

0voto

jay123 Punkte 55

Lösung als Wörterbuchverstehen mit enumerate:

dict = {item : values[index] for index, item in enumerate(keys)}

Lösung als for-Schleife mit enumerate:

dict = {}
for index, item in enumerate(keys):
    dict[item] = values[index]

-1voto

Franco Punkte 61

Es gibt zwar mehrere Möglichkeiten, dies zu tun, aber ich denke, die grundlegendste ist, es anzugehen; Erstellen einer Schleife und eines Wörterbuchs und Speichern von Werten in diesem Wörterbuch . Beim rekursiven Ansatz ist die Idee immer noch dieselbe, aber anstatt eine Schleife zu verwenden, ruft sich die Funktion selbst auf, bis sie das Ende erreicht. Natürlich gibt es auch andere Ansätze wie die Verwendung von dict(zip(key, value)) und so weiter. Dies sind nicht die effektivsten Lösungen.

y = [1,2,3,4]
x = ["a","b","c","d"]

# This below is a brute force method
obj = {}
for i in range(len(y)):
    obj[y[i]] = x[i]
print(obj)

# Recursive approach 
obj = {}
def map_two_lists(a,b,j=0):
    if j < len(a):
        obj[b[j]] = a[j]
        j +=1
        map_two_lists(a, b, j)
        return obj

res = map_two_lists(x,y)
print(res)

Beide Ergebnisse sollten gedruckt werden

{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

-1voto

xiyurui Punkte 199

Methode ohne Zip-Funktion

l1 = [1,2,3,4,5]
l2 = ['a','b','c','d','e']
d1 = {}
for l1_ in l1:
    for l2_ in l2:
        d1[l1_] = l2_
        l2.remove(l2_)
        break  

print (d1)

{1: 'd', 2: 'b', 3: 'e', 4: 'a', 5: 'c'}

0 Stimmen

Hallo xiyurui, Die Eingabe (l1 und l2) sollte eine Liste sein. Wenn Sie l1 und l2 als Set zuweisen, kann es sein, dass die Einfügereihenfolge nicht beibehalten wird. Bei mir lautet die Ausgabe {1: 'a', 2: 'c', 3: 'd', 4: 'b', 5: 'e'}

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