我想比较python中的两个字典键,如果键相等,则打印它们的值。
例如,
dict_one={'12':'fariborz','13':'peter','14':'jadi'}
dict_two={'15':'ronaldo','16':'messi','12':'daei','14':'jafar'}
比较键后,打印
'fariborz', 'daei'
'jadi', jafar'
答案 0 :(得分:3)
您可以遍历两个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'
答案 1 :(得分:1)
您可以将&
运算符用于查找匹配的键
for i in d1.keys() & d2.keys():
print("'{}', '{}'".format(d1[i], d2[i]))
~/python/stack/sept/twenty_2$ python3.7 alice.py 'fariborz', 'daei' 'jadi', 'jafar
答案 2 :(得分:0)
for key, val1 in dict_one.items():
val2 = dict_two.get(key)
if val2 is not None:
print(val1, val2)
答案 3 :(得分:0)
通过一个字典进行迭代,然后检查另一个字典中是否存在键:
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
答案 4 :(得分:0)
字典在python中很不错,因为它们使我们可以非常轻松地查找键的值,并检查字典中是否存在键。
因此在您的示例中,如果您希望在字典之间的键相同时打印值,则可以执行以下操作:
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
答案 5 :(得分:0)
def compare(dict1,dict2):
keys1 = dict1.keys()
keys2 = dict2.keys()
for key in keys1:
if key in keys:
print(dict1[key],dict2[key])
答案 6 :(得分:0)
您要查询两个词典的交集。
set
您可以为此使用内置类型set
,它实现了intersection()
函数。
您可以将列表变成这样的集合:
set(my_list)
因此,为了找到两个字典的键之间的交点,可以将键变成集合并找到交点。
要获取具有字典键的列表:
dict_one.keys()
因此,要找到两个字典的键之间的交集:
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函数。
如果您想知道的话,我将在此包括在内。可能不是最有效的方法!
same_keys = lambda first,second: [key1 for key1 in first.keys() if key1 in second.keys()]
所以,为了得到结果:
result = same_keys(dict_one,dict_two)
以上两种方法中的任何一种都将为您提供两个词典共有的键。
只需遍历它,然后执行您要打印的值即可:
for key in result:
print('{},{}'.format(dict_one[key], dict_two[key]))
答案 7 :(得分:0)
使用交集。然后您可以从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')]