python-3.x - 如何提取具有相同元素值的列表?
问题描述
我有一个这样的列表列表,data=[["date1","a",14,15],["date1","b",14,15],["date1","c",14,15],["date2","a",14,15],["date2","b",14,15],["date2","c",14,15],["date3","a",14,15],["date3","b",14,15],["date3","c",14,15]]
我想获得具有相同第二个索引的列表。我尝试了这段代码,但是当我只需要 3 个列表时,我得到了 9 个列表。
data=[["date1","a",14,15],["date1","b",14,15],["date1","c",14,15],["date2","a",14,15],["date2","b",14,15],["date2","c",14,15],["date3","a",14,15],["date3","b",14,15],["date3","c",14,15]]
for i in data:
a=[]
for j in data:
if (i[1]==j[1]):
a.append(j)
print(a)
我希望得到["date1","a",14,15],["date2","a",14,15],["date3","a",14,15]
["date1","b",14,15],["date2","b",14,15],["date3","b",14,15]
["date1","c",14,15],["date2","c",14,15],["date3","c",14,15]
解决方案
data=[["date1","a",14,15],["date1","b",14,15],["date1","c",14,15],["date2","a",14,15],["date2","b",14,15],["date2","c",14,15],["date3","a",14,15],["date3","b",14,15],["date3","c",14,15]]
from itertools import groupby
from operator import itemgetter
print(
[list(v) for k,v in groupby(sorted(data, key=itemgetter(1)), key=itemgetter(1))]
)
为了使 groupby 工作,必须对数据进行排序。
根据您的用例,可能不需要迭代器的列表实例化。添加它以查看正确的输出而不是<itertools._grouper... >
推荐阅读
- html - 如何在两个图像之间添加填充
- python - 将 python/numpy 索引转移到 Tensorflow 并提高性能
- typescript - 为什么 TypeScript 允许注入无效类型?
- cuda - 确定是否正在使用 cuda 设备?
- javascript - Apify - 将 JSON 输出保存到 key-store-value
- excel - Excel VBA将公式后跟文本输入单元格或单元格公式
- javascript - 批量并行 HTTP 请求,每个请求都有 async for 循环
- java - 如何在 @ApiModelProperty 中设置示例值,以便为 HTTP 状态代码返回不同的值?
- c# - 将 UserControls DependencyProperty 绑定到 ViewModels 属性
- javascript - 计算 WebGL 的斜投影