Divide the values of two dictionaries in python

不打扰是莪最后的温柔 提交于 2019-11-27 18:13:37

问题


I have two dictionaries with the same keys and I would like to do division on the values to update or create a new dictionary, keeping the keys intact, with the quotient as the new value for each of the keys.

d1 = { 'a':12 , 'b':10 , 'c':2 }
d2 = { 'a':0 , 'c':2 , 'b':5}
d3 = d2 / d1

d3 = { 'a':0 , 'b':0.5 , 'c':1 }

Aside from iterating through the key, value pairs and creating ordered lists of the values, then dividing, I'm not sure how to do this. I was hoping for a more elegant solution.


回答1:


Using viewkeys (python2.7):

{k: float(d2[k])/d1[k] for k in d1.viewkeys() & d2}

Same in python 3 (where we can drop the float() call altogether):

{k: d2[k]/d1[k] for k in d1.keys() & d2}

Yes, I am using a key intersection here; if you are absolutely sure your keys are the same in both, just use d2:

{k: float(d2[k])/d1[k] for k in d2}

And to be complete, In Python 2.6 and before you'll have to use a dict() constructor with a generator expression to achieve the same:

dict((k, float(d2[k])/d1[k]) for k in d2)

which generates a sequence of key-value tuples.




回答2:


This works for all pythons, I would however recommend the solution by @MartijnPieters if have Py 2.7+

>>> d1 = { 'a':12 , 'b':10 , 'c':2 }
>>> d2 = { 'a':0 , 'c':2 , 'b':5}
>>> d3 = dict((k, float(d2[k]) / d1[k]) for k in d2)
>>> d3
{'a': 0.0, 'c': 1.0, 'b': 0.5}



回答3:


d1 = { 'a':12 , 'b':10 , 'c':2 }
d2 = { 'a':0 , 'c':2 , 'b':5}
d3={x:float(d2[x])/d1[x] for x in d1}
print d3

output:

{'a': 0.0, 'c': 1.0, 'b': 0.5}



回答4:


in 3.2 you use the .keys() method and the .get(key). http://www.tutorialspoint.com/python/python_dictionary.htm



来源:https://stackoverflow.com/questions/11840111/divide-the-values-of-two-dictionaries-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!