我有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)
但是有更好的方法吗?
答案 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'并且非常快。