Получить ключи по булевому значению
Просьба, подсказать, как корректно получить ключи по значению, при условие что значения является булевыми
имею:
dictr = {'choice': {'ty2': True, 'rt24': False, '89': False}}
к примеру, вывести ключи, где значение True
Ответы (4 шт):
Автор решения: Zhihar
→ Ссылка
можно сделать так:
dictr = {'choice': {'ty2': True, 'rt24': False, '89': False}}
value = True
res = [item[0] for item in dictr['choice'].items() if item[1] == value]
print(res)
если же нужна возможность вложенного обхода ВСЕГО словаря, то нужно просто будет создать аналогичную рекурсивную функцию
Автор решения: Dmitry
→ Ссылка
Простейшее, вот так захардкодить
dictr = {'choice': {'ty2': True, 'rt24': False, '89': False}}
for key, value in dictr["choice"].items():
if value:
print(key)
вывод
ty2
а дальше от ваших целей и желаний
Автор решения: RayVik
→ Ссылка
Я бы сделал так:
dictr = {'choice': {'ty2': True, 'rt24': False, '89': False}}
res = {dictr_key: [key for key, val in dictr_val.items() if val] for dictr_key, dictr_val in dictr.items()}
print(res) # {'choice': ['ty2']}
Автор решения: SergFSM
→ Ссылка
почти то же самое:
dictr = {'choice': {'ty2': True, 'rt24': False, '89': False}}
d = dictr['choice']
res = [k for k in d if d[k]]