簡體   English   中英

壓縮類似鍵以構建字典時如何對值求和

[英]How to sum values when zipping similar key to build a dict

我有A = [a, b, c, d, a, d, c]B=[1, 2, 3, 4, 5, 6, 7]

為什么dict(zip(A,B))不返回{'a': 6, 'b': 2, 'c': 10, 'd': 10}

如何使它起作用?

使用簡單的迭代

前任:

A = ["a", "b", "c", "d", "a", "d", "c"] 
B= [1, 2, 3, 4, 5, 6, 7]

result = {}
for a, b in zip(A, B):
    if a not in result:
        result[a] = 0
    result[a] += b
print(result)

或者使用collections.defaultdict

前任:

from collections import defaultdict
result = defaultdict(int)
for a, b in zip(A, B):
    result[a] += b
pprint(result)

輸出:

{'a': 6, 'b': 2, 'c': 10, 'd': 10}

dict只會覆蓋值.. 你想要的不會那么容易。 你需要這樣的東西:

#!/usr/bin/env python3
from collections import defaultdict

A = ["a", "b", "c", "d", "a", "d", "c"]
B = [1, 2, 3, 4, 5, 6, 7]

output = defaultdict(int)

for a,b in zip(A,B):
        output[a] += b

print(output)

結果:

defaultdict(<class 'int'>, {'a': 6, 'b': 2, 'c': 10, 'd': 10})

默認情況下, defaultdict會將每個新鍵的值設置為0 .. 允許我們在每個鍵上調用+=沒有錯誤.. 給我們我們需要的總和。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM