2024-05-16 09:33:20 发布
网友
我有两个具有相同键的字典,我想对值进行除法以更新或创建一个新字典,保持键的完整性,并将商作为每个键的新值。
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 }
除了遍历键、值对和创建值的有序列表,然后进行分割之外,我不知道如何做到这一点。我希望有一个更优雅的解决方案。
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
输出:
{'a': 0.0, 'c': 1.0, 'b': 0.5}
使用可视键(python2.7):
{k: float(d2[k])/d1[k] for k in d1.viewkeys() & d2}
在python 3中也是如此(我们可以完全删除float()调用):
float()
{k: d2[k]/d1[k] for k in d1.keys() & d2}
是的,我在这里使用了一个键交集;如果您绝对确定两个键都是相同的,只需使用d2:
d2
{k: float(d2[k])/d1[k] for k in d2}
为了完整起见,在Python 2.6中,在您必须使用带生成器表达式的dict()构造函数来实现相同的功能之前:
dict()
dict((k, float(d2[k])/d1[k]) for k in d2)
它生成一系列的键值元组。
这对所有Python都有效,但是如果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}
输出:
使用可视键(python2.7):
在python 3中也是如此(我们可以完全删除
float()
调用):是的,我在这里使用了一个键交集;如果您绝对确定两个键都是相同的,只需使用
d2
:为了完整起见,在Python 2.6中,在您必须使用带生成器表达式的
dict()
构造函数来实现相同的功能之前:它生成一系列的键值元组。
这对所有Python都有效,但是如果Py 2.7+
相关问题 更多 >
编程相关推荐