将值重新分配给字典的pythonic方式

时间:2018-03-20 23:28:34

标签: python dictionary

我有一个字典,列表为值:

my_dict = {1: [2,3], 2: [4, 5], 3: [6, 7]}

我希望更新字典以将值更新为旧列表值的总和:

my_dict = {1: 5, 2: 9, 3: 13}

最有效/ pythonic的方法是什么?我通常做的是:

for key in my_dict:
    my_dict[key] = sum(my_dict[key])

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用词典理解:

my_dict = {1: [2,3], 2: [4, 5], 3: [6, 7]}
new_d = {a:sum(b) for a, b in my_dict.items()}

输出:

{1: 5, 2: 9, 3: 13}

答案 1 :(得分:1)

您可以使用reduce代替sum

from functools import reduce

my_dict = {1: [2,3], 2: [4, 5], 3: [6, 7]}
final = {k: reduce(lambda x,y: x+y, v) for k,v in my_dict.items()}

输出:

{1: 5, 2: 9, 3: 13}

否则,您可以参考此thread获取更多信息。