【问题标题】:Accumulate values of duplicate items within a list累加列表中重复项的值
【发布时间】:2015-03-05 03:22:11
【问题描述】:

我正在尝试找出一种方法来从我的列表中删除“重复”元组,同时还可以累积它们的“值”。棘手的部分是它们不需要真正的重复项或真正的值,那么最好的方法是什么?

尝试将我的列表转换为字典会更容易吗?

我的元组列表:

lst = [('bday', 1), ('ramen', 2), ('cake', 1), ('ramen', 1), ('cake', 2), ('ramen', 1)]

预期输出:

 ({'cake': 3, 'birthday': 1, 'ramen': 4})

【问题讨论】:

    标签: python list dictionary tuples accumulate


    【解决方案1】:

    你可以使用defaultdict:

    from collections import defaultdict
    
    mylist = [('birthday', 1), ('ramen', 2), ('cake', 1), ('ramen', 1), ('cake', 2), ('ramen', 1)]
    
    d = defaultdict(int)
    
    for k,v in mylist:
        d[k] += v        
    
    print(d)    
    # defaultdict(<type 'int'>, {'cake': 3, 'birthday': 1, 'ramen': 4})
    

    【讨论】:

    • 我有一种感觉,我忽略了一些内置功能......这太完美了。
    【解决方案2】:

    有一种适合这种情况的算法。它叫counting sort!在这种情况下,我们将有一个字典,其中的键是您要计算的,出现的次数就是值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多