Python词典包含列表作为值-如何为每个键添加值?

时间:2020-06-08 18:37:45

标签: python pandas list dictionary

我已经提取了一个键和每个键的值列表,并将它们推入字典中。我的下一步是将每个键的每个列表的所有值加在一起,然后将这些值分配给字典。下面是当前我的字典的示例:

{'1/10/20': [42, 22, 462, 60], '1/11/20': [1, 7, 20], '1/12/20': [1238, 12, 984, 75, 102]

希望实现:

{'1/10/20': 586, '1/11/20': 28, '1/12/20': 2411}

我通过功能按熊猫分组提取了数据:

total = df.groupby('DateIn')['TotalSheet'].apply(list).to_dict()

3 个答案:

答案 0 :(得分:3)

使用submenu,您可以执行以下操作:

Pandas

输出:

import pandas as pd

pd.DataFrame(dict([(k,pd.Series(v)) for k,v in d.items()])).T.sum(axis=1).to_dict()

OR

如果您正在寻找Python:可以使用{'1/10/20': 586, '1/11/20': 28, '1/12/20': 2411}

dict comprehension

输出:

d = {'1/10/20': [42, 22, 462, 60], '1/11/20': [1, 7, 20], '1/12/20': [1238, 12, 984, 75, 102]}

{k:sum(v) for k,v in d.items()}

答案 1 :(得分:2)

忽略熊猫背景,只回答如何从给定字典中获取所需字典的问题,这是Python dict理解的一个很好的用例:

result = {
   key: sum(l)
   for key, l in original_dict.items()
}

答案 2 :(得分:2)

好吧,我想一个简单的for循环就足够了。

x = {'1/10/20': [42, 22, 462, 60], '1/11/20': [1, 7, 20], '1/12/20': [1238, 12, 984, 75, 102]}

for item in x.keys():
    x[item] = sum(x[item])
print(x)

您将获得所需的输出,即

{'1/10/20': 586, '1/11/20': 28, '1/12/20': 2411}

干杯。