Python 如何比较两个字典以检查两个字典中是否都有键

Python 如何比较两个字典以检查两个字典中是否都有键,python,Python,我试着比较两个字典,并使用下面的逻辑检查dict1中的每个键是否存在于dict2或dict3中?是否有更好的方法检查dict1中的任何键是否存在于dict2或dict3中,并获得相应的值 dict1 = {'1234': 'john','5678': 'james'}; dict2 = {'1234': 'technician'}; dict3 = {'5678': '50.23'}; shared_keys1 = set(dict1).intersection(dict2) shared_

我试着比较两个字典,并使用下面的逻辑检查dict1中的每个键是否存在于dict2或dict3中?是否有更好的方法检查dict1中的任何键是否存在于dict2或dict3中,并获得相应的值

dict1 = {'1234': 'john','5678': 'james'};
dict2 = {'1234': 'technician'};
dict3 = {'5678': '50.23'};

shared_keys1 = set(dict1).intersection(dict2)

shared_keys2 = set(dict1).intersection(dict3)

for key in shared_keys1:
    print( "Found Shared Key:{0}".format(key) )
    print( "dict1['{0}']={1}".format(key,dict2[key]) )


for key in shared_keys2:
    print( "Found Shared Key:{0}".format(key) )
    print( "dict1['{0}']={1}".format(key,dict3[key]) )
输出:-

Found Shared Key:1234
dict1['1234']=technici
Found Shared Key:5678
dict1['5678']=50.23
我会怎么做

>>> dict1 = {'1234': 'john','5678': 'james'}
>>> dict2 = {'1234': 'technician'};
>>> set(dict1).intersection(dict2)
set(['1234'])


>>> if set(dict1).intersection(dict2):
...     print "there is at least one key that is present in both dictionaries..."
...
there is at least one key that is present in both dictionaries...
如果你想检查更多的单词,你只需添加它们

shared_keys = set(dict1).intersection(dict2).intersection(dict3)


for key in shared_keys:
    print( "Found Shared Key:{0}".format(key) )
    print( "dict1['{0}']={1}".format(key,dict1[key]) )
    print( "dict2['{0}']={1}".format(key,dict2[key]) )
    print( "dict3['{0}']={1}".format(key,dict3[key]) )

如果字典中存在一个键,则dict上的
in
将返回:

>>> a = {'b': 1, 'c': '2'}
>>> 'b' in a
True
>>> 'd' in a
False
因此,您的代码可以写成:

dict1 = {'1234': 'john','5678': 'james'};
dict2 = {'1234': 'technician'};

for key in dict1.keys():
    print key
    if key in dict2:
        print dict1[key] + dict2[key]
    else:
        print dict1[key]
def key_ispresent_in_dict2(key, dict2):
    if key in dict2.keys():
        return True
    return False
如果您只想检查两者是否相等,可以执行以下操作:

set(dict1) == set(dict2)
第一个函数不需要将key或dict1作为参数。我也不认为它在做你想让它做的事。
可能应该是
if
。它可以改写为:

dict1 = {'1234': 'john','5678': 'james'};
dict2 = {'1234': 'technician'};

for key in dict1.keys():
    print key
    if key in dict2:
        print dict1[key] + dict2[key]
    else:
        print dict1[key]
def key_ispresent_in_dict2(key, dict2):
    if key in dict2.keys():
        return True
    return False
你的思路是正确的,可以将整个过程改写为:

dict1 = {'1234': 'john','5678': 'james'};
dict2 = {'1234': 'technician'};

for key in dict1.keys():
    print key
    if key in dict2.keys():
        print dict1[key] + dict2[key]
    else:
        print dict1[key] 

完全去除dict2中的
键ispresent\u

你只是在“检查”dict2中是否有键,而不是dict1中是否有键。Joran-这对我没有帮助,我不需要共享键,我需要知道dict1中的任何键是否存在于dict2或notJoran中-这对于3个字典是如何工作的,假设我有dict1、dict2、dict3。我想检查dict2或dict3中是否存在每个键?如何知道dict2和dict3中的键在哪里以获得相应的值我在你添加注释的同时编辑了我的答案我想你应该看看一些基本的python教程,关于什么是字典,什么是键,什么是集。。。你的家庭作业太多了,或者不管这是什么,人们都会在StackOverflow上牵着你的手。我更新了最新的代码和查询,我可能在我之前的评论中不清楚它们是否相等。。。问题的题目是“如何比较两个字典以检查两个字典中是否都有一个键”,所以我假设键是重要的interpretation@AlexTaylor-如何检查多个字典,如
如果输入(dict2,dict3):
@PythonProg
if key in set().union(*目录列表):
效率不高,但允许您提供任意长的目录列表进行测试。