为什么在使用列表理解时不生成键值对?

Why aren't key value pairs produced when a list comprehension is used?

我有一本字典,我正在尝试使用列表理解对键值对使用条件来过滤字典。该代码不会引发错误,但输出格式错误。 for 循环有效,但列表推导式无效。为什么?我更愿意使用列表理解。

news1 = {'check':1,'this':2, 'thing':3, 'out':4, 'dude':5 }
news2 = {'just':1,'for':2, 'antother':3, 'chance':4, 'now':5 }

for item in x:
    if x[item] > 2:
        print item

def list1(x):
    print  ((item, x[item]) for item in x if x[item] > 2)

圆括号表示不同的生成器理解。使用方括号:

print  [(item, x[item]) for item in x if x[item] > 2]

print [(item, x[item]) for item in x if x[item] > 2]

可行,因为 () 用于其他用途,而且 x 也应定义为某种用途。