У меня есть словарь:Условный список из словаря против Поиска словаря с условием - Python
d = {'red':1,'green':2,'blue':3}
Я позволил создать список ключей из этого словаря, которые соответствуют условию, используя следующий синтаксис :
mylist = [k for k in d if d[k] > 1]
print mylist
>>>> ['blue', 'green']
Но если я пытаюсь искать через словарь с условием, используя аналогичную строку кода, это не работает:
for k in d if d[k] > 1:
print k, d[k]
>>>>for k in d if d[k] > 1:
^
SyntaxError: invalid syntax
Может ли кто-нибудь объяснить мне, почему это не так? Или если я что-то делаю неправильно? Похоже, если мне удастся совместить просмотр словаря с условным выражением при составлении списка, мне также должно быть позволено делать это при просмотре словаря без составления списка.
Я работаю в Python 2.7.8
Я понимаю, что я могу написать это в двух строки - как вы сказали - но почему я не могу записать это в одной строке, как я могу при создании списка? – spacetyper
@spacetyper - Просто потому, что ни один синтаксический сахар никогда не был создан для интересующего вас случая, и ни один из разработчиков Python даже не захотел создать такой синтаксический сахар. Это всего лишь списки, в которых синтаксический сахар считался необходимым. – rmunn
@spacetyper - Вы можете сделать что-то сложное с пониманием генератора, если вы действительно хотите его на одной строке, но он уродлив и умаляет читаемость. Однако, ради полноты, я добавлю его к моему ответу (он не будет хорошо размещен в комментарии). – rmunn