python - python中的分组列表

标签 python list formatting

如何通过与值连续分组将列表 A 转换为列表 B?
这意味着'timeStart_timeEnd_itemName'如果第一个timeEnd等于下一个循环timeStart和itemName是相同的然后追加到一个子列表组,如列表B?
输入

A = ['1070914_1070915_itemA',
     '1070915_1070921_itemA',
     '1070921_1070928_itemA',
     '1071005_1071008_itemA',
     '1071115_1071223_itemA',
     '1071223_1071224_itemA',
     '1071225_1071229_itemB']
结果
B = [['1070914_1070915_itemA',
      '1070915_1070921_itemA',
      '1070921_1070928_itemA'],
     ['1071005_1071008_itemA'],
     ['1071115_1071223_itemA',
      '1071223_1071224_itemA'],
     ['1071225_1071229_itemB']
    ]

最佳答案

这是基于您共享的示例的解决方案,我假设:

  • 您的时间序列列表已根据开始和结束时间排序
  • 列表中没有两个元素与开始/结束时间窗口重叠

  • 这是实现此目的的示例代码:
    my_list = [
        '1070914_1070915_itemA',
        '1070915_1070921_itemA',
        '1070921_1070928_itemA',
        '1071005_1071008_itemA',
        '1071115_1071223_itemA',
        '1071223_1071224_itemA',
        '1071225_1071229_itemB'
    ]
    
    new_list = [[my_list[0]]]
    
    for a, b in zip(my_list, my_list[1:]):
        a_tup, b_tup = a.split('_'), b.split('_')
        if a_tup[1] != b_tup[0]:
            new_list.append([])
        new_list[-1].append(b)
    
    哪里new_list会给你返回:
    [[
        '1070914_1070915_itemA', 
        '1070915_1070921_itemA', 
        '1070921_1070928_itemA'
     ],[
        '1071005_1071008_itemA'
     ],[
        '1071115_1071223_itemA', 
        '1071223_1071224_itemA'
     ],[
        '1071225_1071229_itemB'
     ]]
    

    关于python - python中的分组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67354160/

    相关文章:

    python - Lambda函数根据标签过滤AWS EC2实例?

    java - 具有抽象泛型和集合的 JPA 单表继承

    java - 使用 setText(String.valueOf) 进行格式化(为了钱)

    c# - 使用互操作在 excel 中设置数字格式

    python - Kafka 10 - 具有身份验证和授权的 Python 客户端

    python - 如何在 python 中合并和正确更新字典(其中值是一个列表)?

    python - 查找列表中最常见的元素

    list - 从 dart :typed_data 追加到列表

    python - 随机交换列表中的两个值

    python - 使用 csv header 索引格式化值