У меня есть следующий список словарей, которые в настоящее время содержат значения None:
[{'connections': None}, {'connections': None}, {'connections': None}]
Я хочу просмотреть список элементов, проверить, является ли каждый ключ «соединения» в каждом словаре «Нет», и вернуть true, если это так. Как я могу проверить, все ли значения равны None?





Вы можете использовать выражение генератора и all, чтобы распаковать все значения dict в lst и проверить, все ли они равны None:
out = all(x is None for d in lst for x in d.values())
Выход:
True
Это специально не проверяет, является ли «соединение» «Нет», оно проверяет, являются ли значения все в каждом словаре «Нет» (из формулировки вопроса не очень ясно, имеет ли значение это различие).
Я отредактировал основной вопрос, надеюсь, он понятнее. Но да, в этом случае все должно быть None.
list =[{'connections': None}, {'connections': None}, {'connections':
None}]
for item in list:
if (item['connections']==None):
return True
цикл for здесь получит каждый элемент, оператор if проверит значение ключа каждого элемента в массиве, поэтому, если его None вернет True.
Пожалуйста, не публикуйте только код в качестве ответа, но также объясните, что делает ваш код и как он решает проблему вопроса. Ответы с объяснением, как правило, более полезны и качественны, и с большей вероятностью привлекут положительные голоса.
большое спасибо. я сделаю это в следующий раз
Если вы хотите тихую проверку при выполнении условия:
dict_list = [{'connections': None}, {'connections': None}, {'connections': None}]
assert all( d['connections'] is None for d in dict_list), 'At least one connection value is not None'
Если условие не выполняется, поднимается AssertionError и появляется сообщение выше. В противном случае эта линия проходит.
И если код запускается с включенной оптимизацией и есть один словарь, где «соединения» не равны None, вы не заметите.
@ mkrieger1 действительно, если этот код предназначен для запуска производства, if cond: raise Exception - лучшая практика.
Вот функция, в которой вы можете передать список словарей, чтобы проверить словари, содержащие все значения None.
def func(list):
for dict in list:
for key in dict:
if dict[key] is not None:
return False
return True
print(func([{'connections': None}, {'connections': None}, {'connections': None}]))
Хотя ответы, содержащие только код, могут дать ответ на вопрос, вы можете значительно улучшить качество своего ответа, предоставив контекст для своего кода, причину, по которой этот код работает, и некоторые ссылки на документацию для дальнейшего чтения. Из Как ответить: «Краткость приемлема, но полные объяснения лучше».
Отвечает ли это на ваш вопрос? Как проверить, все ли элементы списка соответствуют условию? (условие
d['connections'] is Noneдля каждого словаряd)