У меня есть ситуация, когда я получаю список 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'}]
Я думаю, что я просто пожарил свой мозг в этот момент, и я пропустил что-то очевидное. Любая помощь будет принята с благодарностью.
спасибо !! Это хорошо работает ... Я буду принимать это как ответ, когда таймер будет вверх. У меня осталось еще несколько минут. – whitebeard
Это не сработает, если элемент, который вы ищете, является 'None', но это третий аргумент' dict.get() '. –
Я не знаю, почему я не думал о get() ... Значение для «бла» всегда будет «1» или «0», так что это именно то, что мне нужно. Еще раз спасибо! – whitebeard