it-swarm.com.de

Wörterbuchwert der Liste zuordnen

Gegeben das folgende Wörterbuch:

dct = {'a':3, 'b':3,'c':5,'d':3}

Wie kann ich diese Werte auf eine Liste anwenden wie:

lst = ['c', 'd', 'a', 'b', 'd']

um etwas zu bekommen wie:

lstval = [5, 3, 3, 3, 3]
25
ulrich

map verwenden:

>>> map(dct.get, lst)
[5, 3, 3, 3, 3]

Verwenden eines Listenverständnisses :

>>> [dct[k] for k in lst]
[5, 3, 3, 3, 3]
36
wim

Sie können dazu ein Listenverständnis verwenden:

lstval = [ dct.get(k, your_fav_default) for k in lst ]

Ich persönlich empfehle die Verwendung von Listenverständnissen über die integrierte map, da sie allen Python-Programmierern bekannt vorkommt, einfacher zu analysieren und zu erweitern ist, falls ein benutzerdefinierter Standardwert erforderlich ist.

13

Sie können Schlüssel aus Ihrer Liste mithilfe der Funktion map durchlaufen:

lstval = list(map(dct.get, lst))

Oder wenn Sie das Listenverständnis bevorzugen:

lstval = [dct[key] for key in lst]
9
Eugene Soldatov
lstval = [d[x] for x in lst]

Benennen Sie Ihr Wörterbuch nicht dict. dict ist der Name des Typs.

6
khelwood

Verwenden Sie keine dict als Variablenname, da sie eingebaut wurde.

>>> d = {'a':3, 'b':3,'c':5,'d':3}
>>> lst = ['c', 'd', 'a', 'b', 'd']
>>> map(lambda x:d.get(x, None), lst)
[5, 3, 3, 3, 3]
3
luoluo

Ich würde ein Listenverständnis verwenden:

listval = [dict.get(key, 0) for key in lst]

Der Teil .get(key, 0) wird verwendet, um einen Standardwert (in diesem Fall 0) zurückzugeben, wenn in dict kein Element mit diesem Schlüssel vorhanden ist.

2
TobiMarg

In der Dokumentation zu Python 3:

Also, Zip(*d.items()) geben Sie Ihr Ergebnis.

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

print(d.items())        # [('a', 1), ('c', 3), ('b', 2), ('d', 4)] in Python 2
                        # dict_items([('a', 1), ('c', 3), ('b', 2), ('d', 4)]) in Python 3

print(Zip(*d.items()))  # [('a', 1), ('c', 3), ('b', 2), ('d', 4)] in Python 2
                        # <Zip object at 0x7f1f8713ed40> in Python 3

k, v = Zip(*d.items())
print(k)                # ('a', 'c', 'b', 'd')
print(v)                # (1, 3, 2, 4)
0