使用 itertools groupby 从分类列表中获取索引值

陆道痛

我有多个带有元组的列表,结果nltk.Freqdist()如下:

totalist[0] = [('A',12),('C',1)] #index 0
totalist[1] = [('A',25),('X',3)] #index 1
totalist[2] = [('Z',3),('T',2)] #index 2
totalist[3] = [('Z',10),('M',8)] #index 3
totalist[4] = [('Z',8),('M',8)] #index 4
totalist[5] = [('C',10),('M',8)] #index 5

即使在按以下方式分组后,我也想获得旧的索引值groupby

到目前为止,这是我的代码,但它不起作用,它无法显示索引,因为从 group by 更改索引:

for key, group in groupby(totalist, lambda x: x[0][0]):
    for thing in group:
        #it should print it's old index value here 
    print(" ")

有什么python方法可以解决这个问题吗?提前致谢。

迈克·穆勒

假设已经排序的列表

groupby假设列表已经排序。示例数据满足这个假设。您可以使用enumerate来保留原始索引并相应地修改您的键功能:

for key, group in groupby(enumerate(totalist), lambda x: x[1][0][0]):
    print(key)
    for temp_thing in group:
        old_index, thing = temp_thing
        print('    ', old_index, thing)

输出:

A
     0 [('A', 12), ('C', 1)]
     1 [('A', 25), ('X', 3)]
Z
     2 [('Z', 3), ('T', 2)]
     3 [('Z', 10), ('M', 8)]
     4 [('Z', 8), ('M', 8)]
C
     5 [('C', 10), ('M', 8)]

假设一个未排序的列表

这是一个修改后的解决方案,如果您需要先对列表进行排序。最好编写一个用于排序和分组的函数:

def key_function(x):
    return x[1][0][0]

现在,使用此函数两次以获得一致的排序和分组:

for key, group in groupby(sorted(enumerate(totalist), key=key_function), key_function):
    print(key)
    for temp_thing in group:
        old_index, thing = temp_thing
        print('    old index:', old_index)
        print('    thing:', thing)

输出:

A
    old index: 0
    thing: [('A', 12), ('C', 1)]
    old index: 1
    thing: [('A', 25), ('X', 3)]
C
    old index: 5
    thing: [('C', 10), ('M', 8)]
Z
    old index: 2
    thing: [('Z', 3), ('T', 2)]
    old index: 3
    thing: [('Z', 10), ('M', 8)]
    old index: 4
    thing: [('Z', 8), ('M', 8)]

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用itertools.groupby

来自分类Dev

如何使用itertools.groupby格式化字典列表?

来自分类Dev

有什么方法可以使用itertools groupby删除列表中相邻的重复项,但保留原始索引吗?

来自分类Dev

使用`itertools.groupby()`获取以`A`开头的字符串运行列表?

来自分类Dev

在itertools.groupby的结果上使用zip意外给出空列表

来自分类Dev

Python的itertools.groupby()文档中使用的keyfunc是什么?

来自分类Dev

如何通过true / false lambda函数使用itertools.groupby

来自分类Dev

使用itertools或numpy的分类排列

来自分类Dev

如何针对使用特定索引值的产品使用itertools?

来自分类Dev

python groupby itertools列出方法

来自分类Dev

Itertools Groupby提供了意外结果

来自分类Dev

python itertools groupby 返回空

来自分类Dev

使用itertools将元组分组的列表

来自分类Dev

使用itertools库获取对象组合?

来自分类Dev

使用 itertools 中的排列来爆炸内存

来自分类Dev

如何使用itertools.groupby将CSV数据转换为字典

来自分类Dev

如何在使用 itertools.groupby 删除重复项时包含每个字符的计数

来自分类Dev

如何使用itertools.zip_longest在嵌套列表中获取值

来自分类Dev

两次调用“list”后,组消失在“itertools.groupby”中

来自分类Dev

itertools.groupby的意外行为

来自分类Dev

带有聚合的Python itertools groupby

来自分类Dev

如何使用列表列表调用itertools.pruduct函数

来自分类Dev

它是使用itertools.cycle()来了解索引的方法吗?

来自分类Dev

使用itertools重复数

来自分类Dev

Python:如何使用itertools?

来自分类Dev

使用 itertools 加速

来自分类Dev

使用itertools.cycle()在多个列表之间循环

来自分类Dev

Python-使用itertools生成二进制列表

来自分类Dev

转换嵌套列表推导以在python中使用itertools链

Related 相关文章

  1. 1

    使用itertools.groupby

  2. 2

    如何使用itertools.groupby格式化字典列表?

  3. 3

    有什么方法可以使用itertools groupby删除列表中相邻的重复项,但保留原始索引吗?

  4. 4

    使用`itertools.groupby()`获取以`A`开头的字符串运行列表?

  5. 5

    在itertools.groupby的结果上使用zip意外给出空列表

  6. 6

    Python的itertools.groupby()文档中使用的keyfunc是什么?

  7. 7

    如何通过true / false lambda函数使用itertools.groupby

  8. 8

    使用itertools或numpy的分类排列

  9. 9

    如何针对使用特定索引值的产品使用itertools?

  10. 10

    python groupby itertools列出方法

  11. 11

    Itertools Groupby提供了意外结果

  12. 12

    python itertools groupby 返回空

  13. 13

    使用itertools将元组分组的列表

  14. 14

    使用itertools库获取对象组合?

  15. 15

    使用 itertools 中的排列来爆炸内存

  16. 16

    如何使用itertools.groupby将CSV数据转换为字典

  17. 17

    如何在使用 itertools.groupby 删除重复项时包含每个字符的计数

  18. 18

    如何使用itertools.zip_longest在嵌套列表中获取值

  19. 19

    两次调用“list”后,组消失在“itertools.groupby”中

  20. 20

    itertools.groupby的意外行为

  21. 21

    带有聚合的Python itertools groupby

  22. 22

    如何使用列表列表调用itertools.pruduct函数

  23. 23

    它是使用itertools.cycle()来了解索引的方法吗?

  24. 24

    使用itertools重复数

  25. 25

    Python:如何使用itertools?

  26. 26

    使用 itertools 加速

  27. 27

    使用itertools.cycle()在多个列表之间循环

  28. 28

    Python-使用itertools生成二进制列表

  29. 29

    转换嵌套列表推导以在python中使用itertools链

热门标签

归档