me4*_*e45 4 python zip dictionary
我在python中创建了两个列表,如下所示:
list1 = [2, 3, 3, 4, 4, 5]
list2 = [-4, 8, -4, 8, -1, 2]
Run Code Online (Sandbox Code Playgroud)
现在我将这两个列表压缩成一个字典,如下所示:
d = dict(zip(list1, list2))
Run Code Online (Sandbox Code Playgroud)
这给了我:
{2: -4, 3: -4, 4: -1, 5: 2}
Run Code Online (Sandbox Code Playgroud)
我想得到的是这样的结果:
{2: -4, 3: 4, 4: 7, 5: 2}
Run Code Online (Sandbox Code Playgroud)
list1正在成为新词典的关键.如果我在list1中有两个相同的值,我希望它添加这两个值.例如,在list2中,8和-4都具有相同的键3.有没有办法将这两个值一起添加,所以键看起来像
{3: 4}
Run Code Online (Sandbox Code Playgroud)
Ray*_*ger 10
我想你想要这样的东西:
>>> list1 = [2, 3, 3, 4, 4, 5]
>>> list2 = [-4, 8, -4, 8, -1, 2]
>>> d = {}
>>> for k, v in zip(list1, list2):
d[k] = d.get(k, 0) + v
>>> d
{2: -4, 3: 4, 4: 7, 5: 2}
Run Code Online (Sandbox Code Playgroud)
尝试使用defaultdict:
from collections import defaultdict
d = defaultdict(int)
for k, v in zip(list1, list2):
d[k] += v
Run Code Online (Sandbox Code Playgroud)
结果:
defaultdict(<type 'int'>, {2: -4, 3: 4, 4: 7, 5: 2})
看到它在线工作:ideone