如何在Python中比较两个字典键?

如何在Python中比较两个字典键?,python,dictionary,Python,Dictionary,我想比较python中的两个字典键,如果键相等,则打印它们的值 比如说, dict_one={'12':'fariborz','13':'peter','14':'jadi'} dict_two={'15':'ronaldo','16':'messi','12':'daei','14':'jafar'} 在比较键之后,打印 'fariborz', 'daei' 'jadi', jafar' 您可以迭代两个DICT键的交点,并在将它们映射到repr函数后打印两个DICT的对应值,这将有助于引用

我想比较python中的两个字典键,如果键相等,则打印它们的值

比如说,

dict_one={'12':'fariborz','13':'peter','14':'jadi'}
dict_two={'15':'ronaldo','16':'messi','12':'daei','14':'jafar'}
在比较键之后,打印

'fariborz', 'daei'
'jadi', jafar'

您可以迭代两个DICT键的交点,并在将它们映射到
repr
函数后打印两个DICT的对应值,这将有助于引用字符串:

for k in dict_one.keys() & dict_two.keys():
    print(','.join(map(repr, (dict_one[k], dict_two[k]))))
这将产生:

'fariborz','daei'
'jadi','jafar'

通过一个字典进行迭代,并检查另一个字典中是否存在键:

dict_one = {'12':'fariborz','13':'peter','14':'jadi'}
dict_two = {'15':'ronaldo','16':'messi','12':'daei','14':'jafar'}

for k in dict_one:
    if k in dict_two:
        print(dict_one[k], dict_two[k])


# fariborz daei
# jadi jafar

python中的字典很好,因为它们允许我们非常容易地查找键的值,并且还可以检查dict中是否存在键

因此,在您的示例中,如果要打印DICT之间的键相同时的值,可以执行以下操作:

dict_one={'12':'fariborz','13':'peter','14':'jadi'}
dict_two={'15':'ronaldo','16':'messi','12':'daei','14':'jafar'}

# Loop through all keys in dict_one
for key in dict_one:
    # Then check if each key exists in dict_two
    if key in dict_two:
        val1 = dict_one[key]
        val2 = dict_two[key]
        print('{},{}'.format(val1, val2))  # print out values with comma between them
set(my_list)

你要的是两本词典的交叉点

使用内置类型
set
您可以为此使用内置类型
set
,它实现了
intersection()
函数

可以将列表转换为如下所示的集合:

dict_one={'12':'fariborz','13':'peter','14':'jadi'}
dict_two={'15':'ronaldo','16':'messi','12':'daei','14':'jafar'}

# Loop through all keys in dict_one
for key in dict_one:
    # Then check if each key exists in dict_two
    if key in dict_two:
        val1 = dict_one[key]
        val2 = dict_two[key]
        print('{},{}'.format(val1, val2))  # print out values with comma between them
set(my_list)
因此,为了找到两个字典的键之间的交集,可以将键转换为集合并找到交集

要获取包含字典键的列表,请执行以下操作:

dict_one.keys()
因此,要找到两个dict键之间的交点:

set(dict_one.keys()).intersection(set(dict_two.keys()))
在您的示例中,这将返回集合
{'12',14'}

以上代码以更可读的方式显示:

keys_one = set(dict_one.keys())
keys_two = set(dict_one.keys())
same_keys = keys_one.intersection(keys_two)
# To get a list of the keys:
result = list(same_keys)
使用匿名函数(lambda函数)和列表理解 解决这个问题的另一个简单方法是使用lambda函数

我把这个放在这里,以防万一你想知道。可能不是最有效的方法

same_keys = lambda first,second: [key1 for key1 in first.keys() if key1 in second.keys()]
因此,为了得到结果:

result=相同的按键(dict\u one,dict\u two)

以上两种方法中的任何一种都将为您提供两个词典通用的键

只需在其上循环,并按照您的意愿打印值:

for key in result:
    print('{},{}'.format(dict_one[key], dict_two[key]))

您可以使用
&
运算符查找匹配的键

for i in d1.keys() & d2.keys():
    print("'{}', '{}'".format(d1[i], d2[i]))

使用交集。然后您可以从
dict_one
dict_two

这是我的代码:

dict_one={'12':'fariborz','13':'peter','14':'jadi'}
dict_two={'15':'ronaldo','16':'messi','12':'daei','14':'jafar'}
print([(dict_one[vals],dict_two[vals]) for vals in dict_one.keys() & dict_two.keys()])
输出

 [('fariborz', 'daei'), ('jadi', 'jafar')]

我认为你有把键/值混淆的想法。键是左边的东西,用来映射到右边的值。(数字是键,名称是示例中的值)。您可以对dict.keys()执行设置操作吗?我以前没见过!是的,dict键的设置与每个对象的设置类似。它相当方便。
 [('fariborz', 'daei'), ('jadi', 'jafar')]