Skip to content

Schlüssel aus Wert in Wörterbuch in Python holen

Python

Dieser Artikel Genau, wie SIE den Schlüssel aus dem Wert in Einem Wörterbuch (Objekt vom Typ dict) in Python erhalten.

  • Holen Sie sich den Schlüssel aus dem Wert mit Listenverständnis und Elementen ()
  • Beispielcodes zum Extrahieren von Schlüsseln mit verschiedenen Bedingungen

Um den Wert über den Schlüssel zu erhalten, geben SIE den Schlüssel einfach wie folgt an.

d = {'key1': 'aaa', 'key2': 'aaa', 'key3': 'bbb'}

value = d['key1']
print(value)
# aaa

Sie können auch die Methode get() verwenden, um den Wert über den Schlüssel abzurufen. Wenn SIE die get()-Methode verwenden, WIRD kein Fehler ausgelöst, Selbst WENN SIE einen Schlüssel angeben, der nicht existiert. Siehe folgenden Artikel.

Sie können auch die Methode keys() verwenden, um eine Liste aller Schlüssel zu erhalten.

Holen Sie sich den Schlüssel aus dem Wert mit Listenverständnis und Elementen ()

Verwenden Sie zum Abrufen des Schlüssels aus dem Wert im Wörterbuch das Listenverständnis und die Methode items().

Informationen zu Listenverständnissen und for-Schleifen für Wörterbücher finden Sie in den following Artikeln.

Im Folgenden finden Sie einen Beispielcode zum Abrufen einer Liste von Schlüsseln, die einem bestimmten Wert zugeordnet sind. Wenn der Schlüssel mit dem angegebenen Wert nicht existiert, wird eine leere Liste zurückgegeben.

d = {'key1': 'aaa', 'key2': 'aaa', 'key3': 'bbb'}
keys = [k for k, v in d.items() if v == 'aaa']
print(keys)
# ['key1', 'key2']

keys = [k for k, v in d.items() if v == 'bbb']
print(keys)
# ['key3']

keys = [k for k, v in d.items() if v == 'xxx']
print(keys)
# []

Wenn Sie anstelle der Liste den Schlüssel selbst erhalten möchten, können Sie das erste Element der Liste mit [0] angeben.

Beachten Sie, dass es sich um eine leere Liste handelt, wenn ein Schlüssel mit dem angegebenen Wert nicht vorhanden ist, sodass die Angabe von [0] IndexError auslöst.

key = [k for k, v in d.items() if v == 'aaa'][0]
print(key)
# key1

key = [k for k, v in d.items() if v == 'bbb'][0]
print(key)
# key3

# key = [k for k, v in d.items() if v == 'xxx'][0]
# print(key)
# IndexError: list index out of range

Wenn Sie wiederholt Vorgang wiederholen, ist es sinnvoll, ihn zu einer Funktion zu machen.

def get_keys_from_value(d, val):
    return [k for k, v in d.items() if v == val]

keys = get_keys_from_value(d, 'aaa')
print(keys)
# ['key1', 'key2']

Für Wörterbücher, die keine doppelten Werte haben, ist auch die folgende Funktion möglich.

Wenn ein Schlüssel mit dem angegebenen Wert vorhanden ist, wird dieser Schlüssel zurückgegeben, andernfalls wird None zurückgegeben. Wenn die Werte dupliziert werden, wird einer der Schlüssel zurückgegeben.

def get_key_from_value(d, val):
    keys = [k for k, v in d.items() if v == val]
    if keys:
        return keys[0]
    return None

key = get_key_from_value(d, 'aaa')
print(key)
# key1

key = get_key_from_value(d, 'bbb')
print(key)
# key3

key = get_key_from_value(d, 'xxx')
print(key)
# None

Im Beispiel Beispiel werden Schlüssel extrahiert, deren Wert gleich dem angegebenen Wert ist.

Sie können Schlüssel unter verschiedenen Bedingungen extrahieren, indem Sie den bedingten Ausdrucksteil des Listenverständnisses ändern.

d_num = {'key1': 1, 'key2': 2, 'key3': 3}

keys = [k for k, v in d_num.items() if v >= 2]
print(keys)
# ['key2', 'key3']

keys = [k for k, v in d_num.items() if v % 2 == 1]
print(keys)
# ['key1', 'key3']

d_str = {'key1': 'aaa@xxx.com', 'key2': 'bbb@yyy.net', 'key3': 'ccc@zzz.com'}

keys = [k for k, v in d_str.items() if v.endswith('com')]
print(keys)
# ['key1', 'key3']