如何在Python中比较两个字典键?
我想比较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的对应值,这将有助于引用
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')]