python - 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']......]
有没有一种简单而干净的方法来做到这一点?
解决方案
我建议使用字典。然后,您可以在 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)
推荐阅读
- javascript - 动态 JSON 参考 Node.js
- android - 如何单击标记下方的 GoogleMap 多边形?
- python - 计算一个计数器在 groupby 中递增的次数
- docker - 在 javascript 中运行 fabcar 示例时出错
- google-cloud-platform - GitLab EE 和 Cloud SQL
- pdfbox - pdfbox:添加背景颜色或突出显示使用 contentStream.showText 添加的文本
- postgresql - 从 jsonb 数组中删除元素
- python - uWSGI 是否使用预编译的 Python 文件?
- sql - 将不同查询中的值插入另一个表
- redirect - Netlify 重定向到 www 在 gatsby 网站上不起作用