2016-01-28 4 views
0

У меня возникли проблемы. Это мой код, я хотел бы проверить, существует ли определенное значение в словаре. Это мой код. Я думаю, что логика правильная, но синтаксис неверен. Пожалуйста, помогите мне. Спасибо.Найти определенное значение в словаре python

a = [ 
     {'amount':200, 'currency':'php'}, 
     {'amount':100, 'currency':'usd'} 
     ] 

result1 = 200 in a 
result2 = 'php' in a 
result = result1 and result2 

print result 

Я ожидаю, чтобы иметь результат 'True'

+0

Возможный дубликат [Python и no очевидный способ получить определенный элемент из словаря] (http://stackoverflow.com/questions/6701449/python-and-no-obvious-way-to-get-a-specific-element-from-a-dictionary) –

ответ

0

Вы можете сделать что-то вроде

a = [ 
    {'amount':200, 'currency':'php'}, 
    {'amount':100, 'currency':'usd'} 
    ] 

for i in a: 
    if 200 in i.values(): 
     result1=True 

    if "php" in i.values(): 
     result2=True 

result = result1 and result2 
print result 
2

Линия

result1 = 200 in a 

ищет элемент списка с значение 200. Но ваши элементы списка - словари. Таким образом, ваши ожидания невозможно достичь, как указано.

Итак, предполагая, что ваша цель состоит, чтобы проверить конкретное значение содержится ни в одном из элементов (т.е. словари) из списка a, вы должны написать

result1 = any(200 in el.values() for el in a) 
result2 = any('php' in el.values() for el in a) 

result = result1 and result2 
print result 

который производит

True 
1

Использование iteritems для итерации через словарь устанавливает свои ключи и значения

a = [ 
     {'amount':200, 'currency':'php'}, 
     {'amount':100, 'currency':'usd'} 
     ] 

for lst in a: 
    for k,v in lst.iteritems(): 
     if 200 == v: 
      res1 = 'True' 
     if 'php' == v: 
      res2 = 'True' 
print res1 and res 
Смежные вопросы