加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如果元组具有相同的第一个元素,如何聚合元组列表的元素?

发布时间:2020-12-13 20:09:39 所属栏目:百科 来源:网络整理
导读:我有一个列表,其中每个值是一个元组列表.例如,这是我为密钥提取的值: [('1998-01-20',8),('1998-01-22',4),('1998-06-18',8 ),('1999-07-15',7),('1999-07-21',1) ] 我也对列表进行了排序. 现在我想聚合这样的值: [('1998-01',12 ),('1998-06',('1999-07',
我有一个列表,其中每个值是一个元组列表.例如,这是我为密钥提取的值:
[('1998-01-20',8),('1998-01-22',4),('1998-06-18',8 ),('1999-07-15',7),('1999-07-21',1) ]

我也对列表进行了排序.
现在我想聚合这样的值:

[('1998-01',12 ),('1998-06',('1999-07',8 )]

从某种意义上说,我想按月分组我的元组,一起总结每个月的整数,我读过有关groupby的内容,我认为它对我的数据结构无法帮助,因为我不知道我会做什么面对我的列表所以我试图找到一种说法:如果i [0] [:6]相等,则从元组的第一个元素开始:sum i [1].但是我很难实现这个想法.

for i in List :
        if i[0][:6] # *problem* I don't know how to say my condition :
        s=sum(i[1]) #?

我很感激任何建议,因为我是python的新用户!

还有一个答案与已经给出的答案不同.您可以简单地创建一个新的字典,其中键是年 – 月组合.使用dictionary.get(key,defaultvalue)遍历列表中的日期应该可以解决问题. IT将当前值添加到新字典中的值,如果密钥尚不存在,则返回默认值0并创建密钥.
data = [('1998-01-20',1)]
dictionary = dict()
for (mydate,val) in data: #
    ym = mydate[0:7]    # the key is only the year month combination (i.e. '1998-01' for example)
    dictionary[ym] = dictionary.get(ym,0) + val  # return the value for that key or return default 0 (and create key)

data_aggregated = [(key,val) for (key,val) in dictionary.iteritems()] # if you need it back in old format

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读