首页 > 解决方案 > python按某个id剪切一个列表

问题描述

我有一个包含日期和 ID 的列表,例如:

olist = ['20191101_01.csv','20191101_02.csv','20191101_03.csv','20191101_04.csv','20191102_01.csv','20191102_02.csv','20191102_03.csv','20191102_04.csv','20191103_01.csv','20191103_02.csv','20191103_03.csv','20191103_04.csv']

我想通过 id 来剪切它们,例如:

nlist = [['20191101_01.csv','20191102_01.csv','20191103_01.csv','20191104_01.csv'],['20191101_02.csv','20191102_02.csv','20191103_02.csv','20191104_02.csv']......]

有没有一种简单而干净的方法来做到这一点?

标签: python

解决方案


我建议使用字典。然后,您可以在 o(n) 时间内实现它

olist = ['20191101_01.csv','20191101_02.csv','20191101_03.csv','20191101_04.csv','20191102_01.csv','20191102_02.csv','20191102_03.csv','20191102_04.csv','20191103_01.csv','20191103_02.csv','20191103_03.csv','20191103_04.csv']
parsed_dict = {}
for el in olist:
  key = el.split('_')[1]
  if parsed_dict.get(key) is None:
    parsed_dict[key] = [el]
  else:
    parsed_dict[key].append(el)

print(parsed_dict)

编辑,根据二战的评论更新:

from collections import defaultdict

olist = ['20191101_01.csv','20191101_02.csv','20191101_03.csv','20191101_04.csv','20191102_01.csv','20191102_02.csv','20191102_03.csv','20191102_04.csv','20191103_01.csv','20191103_02.csv','20191103_03.csv','20191103_04.csv']
parsed_dict = defaultdict(list)
for el in olist:
  key = el.split('_')[1]
  parsed_dict[key].append(el)

print(parsed_dict)

推荐阅读