В Python 3.5 я пытаюсь перебрать цикл for
с использованием dict
понимания, но он не работает так, как с list
. Ниже будут представлены как ошибка синтаксиса (не PyCharm, только во время выполнения):Можно ли использовать определение dict в цикле for без создания нового dict?
for k, v in (k, v for k, v in {"invalid": 1, "valid": 2}.items() if k == "valid"): # syntax error
print("Valid: " + (str(v)))
В то время как следующие работы:
for e in (e for e in ["valid", "invalid"] if e == "valid"): # works
print(e)
Я знаю создания нового dict
будет работать (например), но я хочу избежать накладных расходов, поскольку я просто выполняю операции над элементами.
for k, v in {k: v for k, v in my_dict.items() if k == "valid"}.items(): # works
print("Valid: " + (str(k)))
Конечно, я мог бы использовать обычный старый if k == "valid": continue
условие внутри цикла, но я хотел бы понять, почему dict
понимание представляется более ограниченным, чем с list
.
Это выражение генератора в вашем первом примере, а не понимание dict. Ваш последний пример - единственный, у которого есть понимание dict. – user2357112