Как получить все ключи с одинаковыми значениями?

Есть такой словарь : mydict = {'main':'open','second':'close','third':'open'}. Надо из него получить все ключи со значениями 'open'.

Пробовал такой код:

mydict = {'main':'open','second':'close','third':'open'}
print(list(mydict.keys())[list(mydict.values()).index('open')])

Он выводит только main. Как вывести все ключи со значением 'open'?


Ответы (4 шт):

Автор решения: Karlson21

Можно так сделать:

mydict = {'main':'open','second':'close','third':'open'}
mylist = []

for i in mydict:
    if mydict[i] == 'open':
        mylist.append(i)
→ Ссылка
Автор решения: CrazyElf

Изучите списковые включения, они очень часто пригождаются в питоне, поскольку позволяют довольно кратко и понятно делать выборки:

mydict = {'main':'open','second':'close','third':'open'}
print([k for k in mydict if mydict[k] == "open"])

Вывод:

['main', 'third']

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

→ Ссылка
Автор решения: Victor VosMottor

Вариация:

print(*filter('open'.__eq__, mydict.values()))
→ Ссылка
Автор решения: dIm0n

Вот так вот:

mydict = {'main': 'open', 'second': 'close', 'third': 'open'}
print(list(filter(lambda k: mydict[k] == 'open', mydict)))
→ Ссылка