2016-03-29 23 views
0

arasında bir değer bulun. Bir sözlükte belirli bir konumda belirli bir değere sahip bir anahtar bulmaya çalışıyorum. Sözlüğüm böyle görünüyor.anahtarı, bir değerde

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

İşte yapmaya çalıştığım bir örnek.

'4169208' değerini 1 konumunda ve '4170285' değerini gösteren dönüş tuşu. Döndürülen anahtar '3' olmalıdır. Bunun gibi,

m = '4169208' n = '4170285'

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

Bunu kullanarak 'itervalues ​​()' ya benzer bir işlevi yapabilir eğer iyi olurdu.

+0

Eğer pozisyon 1 neyi kastediyorsunuz kontrol edebilirsiniz? Ayrıca, bunu yapmaya teşebbüs etmek için lütfen yazdığınız kodu lütfen gösterir misiniz? Ve şu anda sizin için neyin işe yaramadığını açıklayın. – idjaw

+0

Benim sorularımı daha iyi anlatabilmek için sorularım daha iyi – krthkskmr

cevap

1

, yapmanız gereken tek değişiklik Denetlediğiniz liste uzunluğu >= 2. Sonra sahip olduğundan emin olmak için ilk kontrol etmektir Eğer pozisyon 1 bakarak durumu ve 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

Teşekkür ederim, benim sorunumun varsaydığımdan daha silli olduğunu ortaya koydu. – krthkskmr

0

python3.5 kesinlikle kodunuzu düzeltme dayanarak

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 
İlgili konular