Python2.7列表操作

2024-05-18 14:50:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python2.7的新手。下面是我的数据的一个子集,它只是一个列表列表,并且希望将具有相同类型(myList[0])和相同日期(myList[8])的列表的值相加到一个新的单个列表中。在

myList = [
    [u'MtM', u'Consistency Check', u'Break', 123123, 123, 456456, 456, '1/8/2014'],
    [u'MtM', u'Consistency Check', u'Break', 321321, 321, 654654, 654, '1/8/2014'],
    [u'MtM', u'Consistency Check', u'Break', 987987, 987, 789789, 789, '1/9/2014'],
    [u'Notional', u'Consistency Check', u'Break', 320320, 320, 210210, 210, '1/13/2014'],
    [u'Notional', u'Completeness Check', u'Break', 121121, 121, 412412, 412, '1/13/2014']
]

我正在尝试获得以下结果,但不知道如何操作:

^{pr2}$

在新的列表列表(newList)中,具有相同类型的相同日期的列表被合并到一个列表中,但是它们的数值被求和,并且描述项(myList[1])值与":"相连。在

有人知道怎么做吗?任何想法或建议都将不胜感激。谢谢您!在


Tags: 数据类型列表check子集数值break新手
1条回答
网友
1楼 · 发布于 2024-05-18 14:50:04

使用字典将条目映射到公共和:

sums = {}
for entry in myList:
    key = entry[0], entry[-1]
    if key not in sums:
        sums[key] = entry[:]
        sums[key][1] = set([entry[1]])
    else:
        sums[key][3:-1] = [s + elem for s, elem in zip(sums[key][3:-1], entry[3:-1])]
        sums[key][1].add(entry[1])

newList = [e[:1] + [':'.join(e[1])] + e[2:] for e in sums.values()]
  1. 项目按第一个和最后一个元素分组。在
  2. 除前3列和最后一列外,所有内容都被汇总。在
  3. 输出顺序可以是任意的。在
  4. 第三列(u'Break')没有变化。在

演示:

^{pr2}$

相关问题 更多 >

    热门问题