969 Stimmen

Schlüssel nach Wert im Wörterbuch abrufen

Ich habe eine Funktion entwickelt, die die Altersangaben in einer Dictionary und zeigt den passenden Namen an:

dictionary = {'george' : 16, 'amber' : 19}
search_age = raw_input("Provide age")
for age in dictionary.values():
    if age == search_age:
        name = dictionary[age]
        print name

Ich weiß, wie man vergleicht und das Alter findet, aber ich weiß nicht, wie man den Namen der Person anzeigt. Außerdem erhalte ich eine KeyError wegen der Zeile 5. Ich weiß, dass das nicht korrekt ist, aber ich finde nicht heraus, wie ich die Suche rückwärts durchführen kann.

0 Stimmen

1 Stimmen

Würden Sie ein Wort anhand seiner Definition in einem Wörterbuch finden? NEIN.

0 Stimmen

Sie können eine verschlossene Tür nicht öffnen. (Es sei denn, man bricht sie auf.)

41voto

Jelen Punkte 603
a = {'a':1,'b':2,'c':3}
{v:k for k, v in a.items()}[1]

oder besser

{k:v for k, v in a.items() if v == 1}

6 Stimmen

Was ist, wenn es einen anderen Schlüssel gibt, der denselben Wert von a enthält? Das könnte ein pythonischer Weg sein. Aber keine gute Idee.

0 Stimmen

Guter Punkt, ich habe eine Lösung hinzugefügt, die mit nicht eindeutigen Werten funktioniert

37voto

faham Punkte 834
key = next((k for k in my_dict if my_dict[k] == val), None)

0 Stimmen

Kann ich in derselben Zeile auch ein "else" haben? Für den Fall, dass mein Wert nicht in den Diktatwerten enthalten ist

1 Stimmen

lKey = [k for k, v in lDictionary.iteritems() if v == lValue][0] or 'else-key'

25voto

johnaphun Punkte 614

Versuchen Sie diesen Einzeiler, um ein Wörterbuch umzukehren:

reversed_dictionary = dict(map(reversed, dictionary.items()))

1 Stimmen

Das hat für mein Verschlüsselungs- und Entschlüsselungsprogramm hervorragend funktioniert, vielen Dank!

0 Stimmen

Sehr saubere Alternative zu dict(zip(dictionary.values(), dictionary.keys())) ! Wie sieht es mit der Geschwindigkeit aus?

16voto

Safia Abdalla Punkte 151

Wenn Sie den Schlüssel anhand des Wertes finden möchten, können Sie mit einem Wörterbuchverständnis ein Nachschlagewörterbuch erstellen und dieses dann verwenden, um den Schlüssel anhand des Wertes zu finden.

lookup = {value: key for key, value in self.data}
lookup[value]

14voto

Sakhri Houssem Punkte 865

Können wir die Key de dict von:

def getKey(dct,value):
     return [key for key in dct if (dct[key] == value)]

2 Stimmen

Leicht und einfach zu verstehen, funktioniert für eindeutige Werte.

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