Skip to main content
 首页 » 编程设计

python之列表增量列表(如果存在)否则扩展

2025年05月04日30cyq1162

我有一个列表列表如下

[ 
['a', 1], 
['b',2], 
['c',1], 
['a', 2], 
['c', 5] 
] 

我想以这样一种方式规范化这个列表,即对于每个“a”、“b”、“c”等,我在列表中只有一个唯一条目,对于每个重复列表,第二个值是是添加数量以便我得到类似的东西:

[ 
['a', 3], # so since 'a' already existed the quantity is added 1 + 2 becomes 3 
['b',2], 
['c',6]   # similarly for 'c' it becomes 1 + 5 = 6 
] 

如何用 Python 做到这一点?

请您参考如下方法:

我建议使用 collections.defaultdict()如下所示:

from collections import defaultdict 
 
l = [ 
['a', 1], 
['b',2], 
['c',1], 
['a', 2], 
['c', 5] 
] 
 
d = defaultdict(int) 
for key, value in l: 
    d[key] += value 
 
print(d.items()) 

输出:

dict_items([('b', 2), ('a', 3), ('c', 6)]) 

您也可以使用 try...expect 而不是 collections.defaultdict()...如果您愿意:

d = {} 
for key, value in l: 
    try: 
        d[key] += value 
    except KeyError: 
        d[key] = value 

此外,您可以尝试if...else:

d = {} 
for key, value in l: 
    if key in d: 
        d[key] += value 
    else: 
        d[key] = value