如何将字典键值从列表更改为单个int或float在python中?



从以列表形式存储值的字典开始,例如:

ID_TypeDict = {2: [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], 3: [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], 4: [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]}

我的目标是对列表值求和,并将该值作为int或float赋值给dict键。首先,我做了以下操作:

TypeSum = dict(zip(ID_TypeDict.keys(), [[sum(item)] for item in ID_TypeDict.values()]))

返回带有单个浮点值的列表:

{2: [1.0], 3: [1.0], 4: [2.0]}

如何将字典值赋给列表中的键?我试图分配值来代替列表对象(下面的代码片段),但这不是正确的方法,因为它不会改变任何东西:

for val in TypeSum.values():
for item in val:
val = [0]

实现这一目标的有效且最佳的实践方法是什么?它是否应该在生成TypeSum字典的同一行代码中完成(对列表值求和)?还是事后处理?提前谢谢。

只需使用字典推导式,就可以为每个键分配调用列表函数的聚合值。

>>> {k:sum(v) for k,v in ID_TypeDict.items()}
{2: 1.0, 3: 1.0, 4: 2.0}

您正在将sum包装到列表中。如果您更喜欢使用zip的函数式方法或PyGuy回答的字典理解,则可以使用以下命令:

type_sum = dict(zip(ID_TypeDict, map(sum, ID_TypeDict.values())))

相关内容

  • 没有找到相关文章

最新更新