0

У меня есть ситуация, когда я получаю список dicts и вам нужно определить, пуст ли список, или если определенное значение присутствует в определенном key: value в любом из dicts, который может быть получен.
например:Python find if any (key: value) в списке dicts с использованием понимания

[{"blim": "nancy","blam": "x","blah": "1"}, {"blim": "bob","blam": "a","blah": "1"}, {"blim": "joe","blam": "p","blah": "0"}] 

Я сейчас делаю это с помощью:

def foo(x, value): 
    if not x: return True 
    else: 
     for y in x: 
      if y["blah"] == value: return False 
    return True 

if foo(my_list, "0"): 
    ...do truthy stuff here... 

Я бы предпочел, чтобы сделать что-то вроде:

if not x or not any y['blah'] == "0" in x: 
    ...do truthy stuff here... 

Я прочитал все, что я могу найти в последнем 2 дня об использовании понятий и всех предложений, которые появились, когда я ввел свой заголовок, но ничего не нашел, что с этим связано.

я могу получить хороший генератор

for y in x: False if any(y['blah']) == "0" else True 

и я могу получить много SyntaxErrors:

>>> x[y] for x[y]: if (x[y]['blah']=='0') in x 
File "<stdin>", line 1 
    x[y] for x[y]: if (x[y]['blah']=='0') in x 
    ^
SyntaxError: invalid syntax 

>>> if (not x) or (y for y: any(y['blah']) in x == '0': print('stuff')) 
File "<stdin>", line 1 
    if (not x) or (y for y: any(y['blah']) in x == '0': print('stuff')) 
        ^
SyntaxError: invalid syntax 

... 

Я думал, что я мог бы быть рядом с:

>>> if not x or any(y['blah']) in x == '0': print('stuff') 
... 
>>> 

но получил не даже когда мой список dicts был просто:

>>> x 
[{'blah', '0'},{'blah', '0'}] 

Я думаю, что я просто пожарил свой мозг в этот момент, и я пропустил что-то очевидное. Любая помощь будет принята с благодарностью.

ответ

1
any(D.get('blah') == '0' for D in L) 
+0

спасибо !! Это хорошо работает ... Я буду принимать это как ответ, когда таймер будет вверх. У меня осталось еще несколько минут. – whitebeard

+0

Это не сработает, если элемент, который вы ищете, является 'None', но это третий аргумент' dict.get() '. –

+0

Я не знаю, почему я не думал о get() ... Значение для «бла» всегда будет «1» или «0», так что это именно то, что мне нужно. Еще раз спасибо! – whitebeard