Получить ключи по булевому значению

Просьба, подсказать, как корректно получить ключи по значению, при условие что значения является булевыми

имею:

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]]
→ Ссылка