hallo
wie kann ich bei dictionaries mit dem wert auf den schlüssel zugreifen?
Dictionaries
Das hängt vom Anwendungszweck ab. So ohne Weiteres geht es nicht. Eine Variante ist, dass man ein zweites, invertiertes Dictionary erzeugt; damit das funktioniert, müssen die Werte aber als Schlüssel geeignet sein oder entsprechend umgewandelt werden. Das geht zum Beispiel leicht mit einer Dictionary-Comprehension.
Code: Alles auswählen
In [1]: d = {'a': 1, 'b': 2}
In [2]: d
Out[2]: {'a': 1, 'b': 2}
In [3]: e = {value: key for key, value in d.items()}
In [4]: e
Out[4]: {1: 'a', 2: 'b'}
- pillmuncher
- User
- Beiträge: 1482
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
mto99: Was nezzcarth gesagt hat.
Es kann allerdings zu Problemen kommen, sofern gleiche Werte verschiedenen Schlüsseln zugeordnet sind:
Statt dessen kann man sowas machen:
Es kann allerdings zu Problemen kommen, sofern gleiche Werte verschiedenen Schlüsseln zugeordnet sind:
Code: Alles auswählen
>>> d = {'a': 1, 'b': 2, 'c': 1}
>>> e = {value: key for key, value in d.items()}
>>> e
{1: 'c', 2: 'b'} # wo ist a?
Code: Alles auswählen
>>> from collections import defaultdict
>>> e = defaultdict(list)
>>> for k, v in d.items():
... e[v].append(k)
...
>>> e
defaultdict(<class 'list'>, {1: ['a', 'c'], 2: ['b']})
>>> dict(e)
{1: ['a', 'c'], 2: ['b']}
In specifications, Murphy's Law supersedes Ohm's.
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Es gibt auch schon fertige Klassen für Abbildungen in beide Richtungen: https://bidict.readthedocs.io/en/master/index.html
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis