检查同一行中的2个字典中是否存在密钥

时间:2013-06-26 15:00:34

标签: python dictionary

我有2首字典:

a = {'abc': 12}
b = {'abcd': 13, 'abc': 99}

我想检查字典中是否存在某个键。在这种情况下,我想检查a和c是否包含密钥'abc'

我有以下代码:

if 'abc' in a:
    if 'abc' in b:
        print(True)
    else:
        print(False)
else:
    print(False) 

和:

if ('abc' in a) and ('abc' in b):
    print(True)
else:
    print(False)

但是有更好的方法吗?

5 个答案:

答案 0 :(得分:5)

没有 - 这几乎和它一样好......对于发生的事情,它是可读的和明显的:

如果dict的数量增加:

all('abc' in d for d in (d1, d2, d3, d4))

或者,先预先计算,然后访问:

common_keys = set(d1).intersection(d2, d2, d3, d4)
'abc' in common_keys

答案 1 :(得分:3)

一个班轮:)

print ('abc' in a) and ('abc' in b)

答案 2 :(得分:2)

>>> 'abc' in (a.viewkeys() & b.viewkeys())
True

答案 3 :(得分:0)

我认为这个解决方案:

if ('abc' in a) and ('abc' in b):
    print(True)
else:
    print(False)

是最好和最pythonic的方式。

答案 4 :(得分:0)

如何使用列表理解推广到N个词典:

a = {'abc': 12}
b = {'abcd': 13, 'abc': 99}
c = {'abcd': 13, 'abc': 99, 'xyz': 1}
key = 'abc'

if any([key in d.keys() for d in [a,b,c]]):
  print('key found in at least one dict')
elif all([key in d.keys() for d in [a,b,c]]):
  print('key found in all dicts')

我花了一些时间来学习列表推导,但它们实际上只是一行' for-loops'并且非常快。