python - 在python中划分两个字典的值

标签 python dictionary division

我有两个具有相同键的字典,我想对值进行除法以更新或创建一个新字典,保持键完整,商作为每个键的新值。

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/

相关文章:

python - Django:MEDIA_URL 返回找不到页面

python - 为什么 Django 根据谷歌是一个 'less secure' 应用程序?

c++ - 在 C++ 中将 MapB 同步到 MapA

c++ - 创建乘积数组,其中包含可被 A[i] 整除的数组所有元素的乘积,无需使用除法运算符

c# - 形状上的均匀分布算法

c - C中的二进制整数除法?

python - 从列表中提取元组及其元素的语法?

python - 在 excel xlsxwriter 中追加行

ruby-on-rails - Ruby 中 For 和 Map 的区别

python - 将python嵌套循环的结果存储到字典中