如果它们在另一个特定索引中相似,则添加列表的相同索引

迈克尔·埃斯波拉斯

我正在用 python 编程并有一个列表列表

a=[[1234,32.5,'John',1114],[1234,16.3,'John',1115],[1235,25.3,'John',1116],
  [1239,16.3,'Lisa',1117]]

如何合并子索引中相似元素[0]的列表并删除包含索引最小元素的列表[3]

预期输出:

a=[[1234,48.8,'John',1115],[1235,25.3,'John',1116],[1239,16.3,'Lisa',1117]]

自从

 a[1][3] > a[0][3] (1116 > 1115) 

a[0][1]将被添加到a[1][1]a[0]将被全部删除。

我打算将它用于包含数万个列表的列表。

编辑:

我做了:

old=[[1234,32.5,'John',1114],[1234,16.3,'John',1115],[1235,25.3,'John',1116],[1239,16.3,'Lisa',1117]]

memory=old[0]

new=[]

for x, t in enumerate(old):
    if t==memory:
        new.append([t[0],memory[1]+t[1],t[2],t[3]])
        memory=t

但是如果在索引 [0] 中有两个以上相似的列表,这将不适用于列表,代码应该根据有多少相似元素一次又一次地运行。在应用程序中,我的列表列表将在特定索引中包含数百个类似元素。

米拉杜洛

您真正需要的是按常用键对数据进行分组itertools.groupby是为此而制作的,您可以使用operator.itemgetter按每个子列表的关键元素进行分组。

一旦迭代组,跟踪您需要的相应总和和最大值并不难。这确实假设您打算保留最大值而不是删除最小值,因为在一个组中有超过 2 个元素会使在对第二个元素求和时无法做到这一点。

from itertools import groupby
from operator import itemgetter

def merge(data):
    out_data = []
    for _, group in groupby(data, key=itemgetter(0, 2)):
        key_num, to_sum, key_name, to_max = next(group)
        for _, sum_val, _, max_val in group:
            to_sum += sum_val
            to_max = max(to_max, max_val)
        out_data.append([key_num, to_sum, key_name, to_max])
    return out_data

演示

>>> a = [[1234,32.5,'John',1114],
         [1234,16.3,'John',1115], 
         [1235,25.3,'John',1116], 
         [1239,16.3,'Lisa',1117]]

>>> merge(a)
[[1234, 48.8, 'John', 1115],
 [1235, 25.3, 'John', 1116],
 [1239, 16.3, 'Lisa', 1117]]

还值得注意的是,如果您有许多操作要应用于这样的表格数据,您可能需要查看Pandas 库使用 Pandas,您的问题的简洁解决方案可能是

import pandas as pd

def pd_merge(data):
    df = pd.DataFrame(data)    
    return (df.groupby((0, 2), as_index=False)
              .agg({1: 'sum', 3: 'max'})
              .sort_index(1))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从另一个列表中的列表中查找项目的索引,即使它们重复

来自分类Dev

如何从列表中随机添加键并从另一个列表中随机添加值但在字典中的相同索引号上?

来自分类Dev

基于python中另一个列表的索引的列表特定元素的总和

来自分类Dev

如果另一个表中存在值,则过滤表的索引列表

来自分类Dev

如果值与另一个索引相同,如何合并数组索引?

来自分类Dev

如何检查一个列表元素是否在另一个列表中但是否在相同的索引处

来自分类Dev

将一个列表的内容插入到特定索引处的另一个列表中

来自分类Dev

如果一个索引相同而另一个索引不同,则将合并数组与逗号合并

来自分类Dev

用另一个列表中相同索引处的值替换列表中的错误值

来自分类Dev

用另一个列表中相同索引处的值替换列表中的错误值

来自分类Dev

Haskell-仅当一个元素等于另一个列表中相同索引的元素时,才添加一个列表中的元素来创建列表

来自分类Dev

数组索引替换为另一个数组在php中相同的索引

来自分类Dev

根据另一个列表中的索引汇总一个列表中的元素

来自分类Dev

根据列表中的相似项检查列表的索引,然后根据列表的维度附加到另一个列表中

来自分类Dev

从另一个列表创建具有相同索引的值的列表

来自分类Dev

在另一个列表中查找一个列表的值的索引

来自分类Dev

按索引将一个列表中的值插入另一个列表

来自分类Dev

从另一个列表返回特定索引列表的列表值

来自分类Dev

如何根据另一个列表中另一个元素的索引从列表中写出元素?

来自分类Dev

在python中查找包含另一个特定子列表的二维列表的索引

来自分类Dev

将值添加到另一个列表python的基于列表的索引

来自分类Dev

获取数组的值并使它们成为 Java 中另一个数组的索引

来自分类Dev

如何根据另一个列表中的索引从列表中获取子列表?

来自分类Dev

如何在包含相同元素的另一个列表中找到一个列表的元素索引?

来自分类Dev

对特定索引处的嵌套列表的元素以及另一个普通列表的元素的索引进行迭代

来自分类Dev

从一个列表中提取与另一个列表中包含的索引具有相同索引的值,该列表包含在第三个列表中

来自分类Dev

如何从列表中提取索引值并将其替换在另一个特定的数据帧R中?

来自分类Dev

如何在Javascript中从一个索引转到另一个特定索引?

来自分类Dev

使用存储在另一个列表中的索引访问列表中的元素

Related 相关文章

  1. 1

    从另一个列表中的列表中查找项目的索引,即使它们重复

  2. 2

    如何从列表中随机添加键并从另一个列表中随机添加值但在字典中的相同索引号上?

  3. 3

    基于python中另一个列表的索引的列表特定元素的总和

  4. 4

    如果另一个表中存在值,则过滤表的索引列表

  5. 5

    如果值与另一个索引相同,如何合并数组索引?

  6. 6

    如何检查一个列表元素是否在另一个列表中但是否在相同的索引处

  7. 7

    将一个列表的内容插入到特定索引处的另一个列表中

  8. 8

    如果一个索引相同而另一个索引不同,则将合并数组与逗号合并

  9. 9

    用另一个列表中相同索引处的值替换列表中的错误值

  10. 10

    用另一个列表中相同索引处的值替换列表中的错误值

  11. 11

    Haskell-仅当一个元素等于另一个列表中相同索引的元素时,才添加一个列表中的元素来创建列表

  12. 12

    数组索引替换为另一个数组在php中相同的索引

  13. 13

    根据另一个列表中的索引汇总一个列表中的元素

  14. 14

    根据列表中的相似项检查列表的索引,然后根据列表的维度附加到另一个列表中

  15. 15

    从另一个列表创建具有相同索引的值的列表

  16. 16

    在另一个列表中查找一个列表的值的索引

  17. 17

    按索引将一个列表中的值插入另一个列表

  18. 18

    从另一个列表返回特定索引列表的列表值

  19. 19

    如何根据另一个列表中另一个元素的索引从列表中写出元素?

  20. 20

    在python中查找包含另一个特定子列表的二维列表的索引

  21. 21

    将值添加到另一个列表python的基于列表的索引

  22. 22

    获取数组的值并使它们成为 Java 中另一个数组的索引

  23. 23

    如何根据另一个列表中的索引从列表中获取子列表?

  24. 24

    如何在包含相同元素的另一个列表中找到一个列表的元素索引?

  25. 25

    对特定索引处的嵌套列表的元素以及另一个普通列表的元素的索引进行迭代

  26. 26

    从一个列表中提取与另一个列表中包含的索引具有相同索引的值,该列表包含在第三个列表中

  27. 27

    如何从列表中提取索引值并将其替换在另一个特定的数据帧R中?

  28. 28

    如何在Javascript中从一个索引转到另一个特定索引?

  29. 29

    使用存储在另一个列表中的索引访问列表中的元素

热门标签

归档