Ich habe das:
names = {"Micky": "Mouse", "Goofy": "Black", "Pit": "Black", "Donald": "Trump"}
Und ich möchte dieses Wörterbuch mit einer for-Schleife durchlaufen, aber nur einmal für "Black"
. So etwas wie das Folgende:
for value in names.iter_only_once_values():
print value
Output: "Mouse" , "Black" , "Trump"
Ist das möglich und wie?
3 Antworten
Du kannst es so machen:
for value in set(names.values()):
print value
Durch die Verwendung eines Sets werden alle Duplikate entfernt. Die Ausgabe für oben ist:
Mouse
Black
Trump
Alternativ können Sie das Rezept unique_everseen
von https://docs.python.org verwenden /2/library/itertools.html wie folgt:
for value in unique_everseen(names.itervalues()):
print value
Sie können dies versuchen:
for key in {k: v for v, k in names.iteritems()}:
print(key)
Dadurch werden die Wörterbucheinstellungen, Werte als Schlüssel und Schlüssel als Werte umgekehrt. So erhalten Sie die gewünschte Ausgabe:
Mouse
Black
Trump
Ein anderer Weg, dies zu tun:
for name in dict.fromkeys(names.values()).keys():
print name
Ausgabe:
Mouse
Black
Trump
Dieser Ansatz kann nützlich sein, wenn Sie OrderedDict
anstelle von dict
verwenden müssen, zum Beispiel:
from collections import OrderedDict
# dictionary names is sorted by values
ordered_names = OrderedDict(sorted(names.items(), key=lambda t: t[1]))
# dictionary names is printed in desired order
for name in OrderedDict.fromkeys(ordered_names.values()).keys():
print name
Ausgabe:
Black
Mouse
Trump
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.