比较两个字典的值以接收它们的数值差异Python
作者:互联网
我是Python的新手.我有两个字典,它们共享相同的键,但键的值不同.我想比较两个词典,以便我得到每个键的值的数值差异.例如:
dict1 = {‘hi’:45,’thanks’:34,’please’:60}
dict2 = {‘hi’:40,’thanks’:46,’please’:50}
换句话说,我想收到第三本字典或一对列表,它们会显示这两个字典中值的数字差异(从dict2中减去dict1的值(反之亦然).像这样:
dict_difference = {‘hi’:5,’thanks’: – 12,’please’:10}
我知道从另一个字典中减去一个字典:
dict1 = Counter({‘hi’= 45,’thanks’= 34,’please’= 60})
dict2 = Counter({‘hi’= 40,’thanks’= 46,’please’= 50})
dict3 = dict1-dict2#只返回正值,因此它会给出:
dict3 = {‘hi’= 5,’please’= 10}#这不是我想要的.
我还想过将字典转换成一对列表(我认为这就是它的调用方式):
dictlist = []
for key, value in dict1.iteritems():`
temp = (key, value)
dictlist.append(temp)
因此
print dictlist #gives:
[('hi', 45),('thanks' = 34), ('please' = 60)]
所以我想如果我可以设法将字典转换为对的列表然后以键的形式使它:值为key = value我将能够应用subtract()方法并实现我的目标想.
我想通过def __repr __(self)实现它,如https://docs.python.org/2/library/collections.html所示,但我没有走远.
我会非常感谢任何帮助.如果可能,请留下您的代码说明.如果我的方法是错误的并且有一种更简单的方法从另一个字典中减去一个字典的值,请分享它.
解决方法:
首先,你的词典格式不正确(:而不是=):
dict1 = {'hi':45, 'thanks':34, 'please':60}
dict2 = {'hi':40, 'thanks':46, 'please':50}
您可以使用字典理解.您基本上循环遍历一个字典,检查该键是否也在第二个字典中,并在输出字典中插入值的差异.全部在一条线上.
dic = {key: dict1[key]-dict2[key] for key in dict1 if key in dict2}
标签:python,dictionary,subtract,valuestack 来源: https://codeday.me/bug/20190715/1466494.html