2016-03-29 13 views
0

Ich versuche, einen Schlüssel mit einem bestimmten Wert an einer bestimmten Stelle in einem Wörterbuch zu finden. Mein Wörterbuch sieht so aus.Suche nach Schlüssel mit einem Wert unter mehreren Wert

>dict 
>{'1': ['4166908', '4166673'], 
'2': ['4166835', '4167465', '4169369'], 
'3': ['4169108', '4169208', '4170285'], 
'4': ['4170065']} 

Hier ist ein Beispiel für das, was ich versuche zu tun.

Return-Taste mit dem Wert '4169208' in Position 1 und Wert '4170285'. Der zurückgegebene Schlüssel sollte '3' sein. Wie diese

m = '4169208' n = '4170285'

for key, value in mydict.iteritems(): 
    if value[1] == m and value[2] == n: 
     print key 

Es wäre toll, wenn ich dies mit 'itervalues ​​()' tun kann, oder eine ähnliche Funktion.

+0

Was meinst du mit der Position 1? Könnten Sie bitte den Code, den Sie geschrieben haben, bitte zeigen, um dies zu versuchen? Und erkläre, was momentan nicht für dich läuft. – idjaw

+0

Aktualisierte Frage, um mein Dilemma besser zu erklären – krthkskmr

Antwort

1

Basierend auf Ihren Code genau zu korrigieren, die einzige Änderung, die Sie tun müssen, ist, zuerst überprüfen, um sicher, dass die Liste, die Sie überprüfen eine Länge >= 2. Dann Sie können an der Position des Schauens 1 für den Zustand überprüfen und 2.

d = {'1': ['4166908', '4166673'], 
'2': ['4166835', '4167465', '4169369'], 
'3': ['4169108', '4169208', '4170285'], 
'4': ['4170065']} 


for i, v in d.iteritems(): 
    if len(v) >= 2 and v[1] == '4169208' and v[2] == '4170285': 
     print(i) 
+0

Danke, stellt sich heraus, mein Problem war alberner, als ich angenommen hatte. – krthkskmr

0

python3.5

mydict = {'1': ['4166908', '4166673'], 
... '2': ['4166835', '4167465', '4169369'], 
... '3': ['4169108', '4169208', '4170285'], 
... '4': ['4170065']} 
>>> mydict 
{'1': ['4166908', '4166673'], '4': ['4170065'], '2': ['4166835', '4167465', '4169369'], '3': ['4169108', '4169208', '4170285']} 
>>> for key, value in mydict.items(): 
...  if all(v in value for v in [ '4169208', '4170285']): 
...   print(key) 
... 
3 
0
dictionary = {'1': ['4166908', '4166673'], 
    '2': ['4166835', '4167465', '4169369'], 
    '3': ['4169108', '4169208', '4170285'], 
    '4': ['4170065']} 

def get_key_by_value(dictionary, check_values_list): 
    for key, value in dictionary.items(): 
     if all(item in value for item in check_values_list): 
      yield key 

print list(get_key_by_value(dictionary, ['4169208', '4170285'])) 
0
d = {'1': ['4166908', '4166673'], '2': ['4166835', '4167465', '4169369'], 
    '3': ['4169108', '4169208', '4170285'], '4': ['4170065']} 

for i, v in d.items(): 
    if '4169208' in v or '4170285' in v: 
     print i 
Verwandte Themen