我有两个具有相同键的字典,我想对值进行除法以更新或创建一个新字典,保持键完整,商作为每个键的新值。
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 }
除了遍历键、值对并创建值的有序列表,然后除法之外,我不确定如何执行此操作。我希望有一个更优雅的解决方案。
最佳答案
使用 View 键(python2.7):
{k: float(d2[k])/d1[k] for k in d1.viewkeys() & d2}
在 python 3 中相同(我们可以完全放弃 float()
调用):
{k: d2[k]/d1[k] for k in d1.keys() & d2}
是的,我在这里使用了一个关键路口;如果您绝对确定您的 key 在两者中相同,只需使用 d2
:
{k: float(d2[k])/d1[k] for k in d2}
为了完整起见,在 Python 2.6 和之前的版本中,您必须使用带有生成器表达式的 dict()
构造函数来实现相同的目的:
dict((k, float(d2[k])/d1[k]) for k in d2)
生成一系列键值元组。
关于python - 在python中划分两个字典的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840111/