比较python中的2个词典时得到一个奇怪的结果

时间:2015-06-12 17:05:31

标签: python python-2.7

所以我在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')

两者都独立工作,但是当循环遍历时......没什么!

有什么想法吗?

3 个答案:

答案 0 :(得分:7)

0是假的。使用in检查遏制。

if key in bridged:

答案 1 :(得分:4)

问题出现在if语句中,当ToRed'过去了。

if 0

返回false,因此不返回密钥。使用

if key in bridged

答案 2 :(得分:1)

问题是当keyToRed时,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