所以我在python中有一对字典:(两者都有完全相同的键)
defaults = {'ToAlpha': 4, 'ToRed': 4, 'ToGreen': 4, 'ToBlue': 4,}
bridged = {'ToAlpha': 3, 'ToRed': 0, 'ToGreen': 1, 'ToBlue': 2,}
当我遍历其中一个字典时,我会快速检查其他字典是否具有相同的密钥,如果是,则将其打印出来。
for key, value in defaults.iteritems():
if bridged.get(key):
print key
我期望看到的是:
ToAlpha
ToRed
ToGreen
ToBlue
但出于某种原因,“ToRed”没有打印出来。我必须在这里遗漏一些非常简单的东西,但不知道可能会造成这种情况。
bridged.get('ToRed')
和
defaults.get('ToRed')
两者都独立工作,但是当循环遍历时......没什么!
有什么想法吗?
答案 0 :(得分:7)
0
是假的。使用in
检查遏制。
if key in bridged:
答案 1 :(得分:4)
问题出现在if语句中,当ToRed'过去了。
if 0
返回false,因此不返回密钥。使用
if key in bridged
答案 2 :(得分:1)
问题是当key
为ToRed
时,bridged.get('ToRed')
将为0
因此,以下将评估为错误:
if bridged.get(key):
因此无法打印'ToRed'
。
而不是使用in
运算符。
使用in
最pythonic方式检查密钥是否在字典中。
所以请检查:
if key in bridged:
现在最终代码变为:
>>> for key, value in defaults.iteritems():
if key in bridged:
print key
ToAlpha
ToRed
ToBlue
ToGreen