我的字典看起来像
d= {(1, 8): 94.825000000000003, (2, 8): 4.333}
我正在尝试应用函数来舍入所有值。
我不想重新创建字典。
newD= {}
for x,y in d.iteritems():
newD+= {x:round(y)}
是否有任何pythonic方式在所有值上应用round
函数?
答案 0 :(得分:6)
您可以尝试这样的事情:
for k, v in d.iteritems():
d[k] = round(v)
它将对字典中的所有项目进行就地舍入。在这个特定的例子中,它将完美地工作,但要小心 - 使用the round function的所有常规警告都适用。
答案 1 :(得分:6)
这有点令人费解,但你确实要求采用“pythonic-way”方式。 ;)
newD = {k:round(v) for k, v in d.items()}
但是,这种字典理解仅适用于2.7+。如果使用旧版本的Python,请尝试这种更复杂的方式:
newD = dict(zip(d.keys(), [round(v) for v in d.values()]))
让我稍微解压一下:
d
)对象重新分配回新词典(尽管您可以轻松地将其分配给相同的名称)dict()
确保最终结果是字典对象zip()
返回元组列表,其中第i个元组包含每个参数序列中的第i个元素zip()
的第一个参数序列是字典键(d.keys()
)zip()
的第二个参数序列是列表理解后的舍入值