Python|合并具有相同键的两个字典的值
字典是一个无序、可变和索引的集合。在Python中,字典是用大括号编写的,它们有键和值。它广泛用于日常编程、Web 开发和机器学习。组合字典是字典操作中非常常见的任务。
让我们看看如何组合具有相同键的两个字典的值。方法#1:使用Counter
Counter 是字典的一个特殊子类,在大多数情况下执行与字典相同的行为。
# Python code to demonstrate combining
# two dictionaries having same key
from collections import Counter
# initialising dictionaries
ini_dictionary1 = Counter({'nikhil': 1, 'akash' : 5,
'manjeet' : 10, 'akshat' : 15})
ini_dictionary2 = Counter({'akash' : 7, 'akshat' : 5,
'm' : 15})
# printing initial dictionaries
print ("initial 1st dictionary", str(ini_dictionary1))
print ("initial 2nd dictionary", str(ini_dictionary2))
# combining dictionaries
# using Counter
final_dictionary = ini_dictionary1 + ini_dictionary2
# printing final result
print ("final dictionary", str(final_dictionary))
initial 1st dictionary Counter({‘akshat’: 15, ‘manjeet’: 10, ‘akash’: 5, ‘nikhil’: 1})
initial 2nd dictionary Counter({‘m’: 15, ‘akash’: 7, ‘akshat’: 5})
final dictionary Counter({‘akshat’: 20, ‘m’: 15, ‘akash’: 12, ‘manjeet’: 10, ‘nikhil’: 1})
方法 #2:使用dict() and items
此方法适用于Python版本 2。
# Python code to demonstrate combining
# two dictionaries having same key
# initialising dictionaries
ini_dictionary1 = {'nikhil': 1, 'akash' : 5,
'manjeet' : 10, 'akshat' : 15}
ini_dictionary2 = {'akash' : 7, 'akshat' : 5,
'm' : 15}
# printing initial dictionaries
print ("initial 1st dictionary", str(ini_dictionary1))
print ("initial 2nd dictionary", str(ini_dictionary2))
# combining dictionaries
# using dict() and items()
final_dictionary = dict(ini_dictionary1.items() + ini_dictionary2.items() +
[(k, ini_dictionary1[k] + ini_dictionary2[k])
for k in set(ini_dictionary2)
& set(ini_dictionary1)])
# printing final result
print ("final dictionary", str(final_dictionary))
(‘initial 1st dictionary’, “{‘manjeet’: 10, ‘nikhil’: 1, ‘akshat’: 15, ‘akash’: 5}”)
(‘initial 2nd dictionary’, “{‘m’: 15, ‘akshat’: 5, ‘akash’: 7}”)
(‘final dictionary’, “{‘nikhil’: 1, ‘m’: 15, ‘manjeet’: 10, ‘akshat’: 20, ‘akash’: 12}”)
方法#3:使用dict理解和set
# Python code to demonstrate combining
# two dictionaries having same key
# initialising dictionaries
ini_dictionary1 = {'nikhil': 1, 'akash' : 5,
'manjeet' : 10, 'akshat' : 15}
ini_dictionary2 = {'akash' : 7, 'akshat' : 5,
'm' : 15}
# printing initial dictionaries
print ("initial 1st dictionary", str(ini_dictionary1))
print ("initial 2nd dictionary", str(ini_dictionary2))
# combining dictionaries
# using dict comprehension and set
final_dictionary = {x: ini_dictionary1.get(x, 0) + ini_dictionary2.get(x, 0)
for x in set(ini_dictionary1).union(ini_dictionary2)}
# printing final result
print ("final dictionary", str(final_dictionary))
initial 1st dictionary {‘nikhil’: 1, ‘akshat’: 15, ‘akash’: 5, ‘manjeet’: 10}
initial 2nd dictionary {‘akshat’: 5, ‘akash’: 7, ‘m’: 15}
final dictionary {‘nikhil’: 1, ‘akshat’: 20, ‘akash’: 12, ‘m’: 15, ‘manjeet’: 10}