2017-03-02 13 views
-4

Ich versuche eine Funktion zu schreiben, in der der Schlüssel eines Wörterbuchs gedruckt wird, wenn der Benutzer einen seiner Werte eingibt.So finden Sie den Schlüssel, indem Sie den Wert eingeben

Mein Wörterbuch ist:

student = {c0952: [18, 'John', 'Smith'], 
      c0968: [24, 'Sarah', 'Kelly'] 
      } 

Für zum Beispiel, wenn die dann ‚John‘ Benutzereingaben die Matrikelnummer c0952 druckt.

Danke!

+1

Was möchten Sie bei gleichen Werten tun? Ich bezweifle, dass es nur einen "John" geben wird. – akg

+1

Der Punkt von Wörterbüchern ist, Werte von einem Schlüssel nachzuschlagen, wenn Sie Sachen vom Namen der Person nachschlagen möchten, dann machen Sie den Namen den Schlüssel. (möglicherweise als separates Wörterbuch) –

+0

Mögliche Duplikate von [Get Key nach Wert im Wörterbuch] (http://stackoverflow.com/questions/8023306/get-key-by-value-in-dictionary) –

Antwort

1

Vielleicht so etwas:

student = { 'c0952': [18, 'John', 'Smith'], 
      'c0968': [24, 'Sarah', 'Kelly'] 
      } 

name_value = raw_input("value? ") 

for stu_num, names in student.iteritems(): 
    for name in names: 
     if name == name_value: 
      print stu_num 

Oder, wie akg mentioned, ein Einzeiler list comprehension mit:

print [x for x in student.keys() if name_value in student[x]][0] 

Demo:

Wert? John
c0952

Mit den meisten der Antwort von Get key by value in dictionary.

Verwandte Themen