python中对列表排序_在Python中对嵌套列表进行排序和分组

本文介绍了如何在Python中对嵌套列表进行排序和分组。通过使用`operator.itemgetter`和`itertools.groupby`,可以轻松地按列表的特定字段对数据进行排序和分组。此外,还展示了如何使用列表推导式来筛选出具有特定值的子列表。
摘要由CSDN通过智能技术生成

在Python中对嵌套列表进行排序和分组

我具有以下数据结构(列表列表)

[

['4', '21', '1', '14', '2008-10-24 15:42:58'],

['3', '22', '4', '2somename', '2008-10-24 15:22:03'],

['5', '21', '3', '19', '2008-10-24 15:45:45'],

['6', '21', '1', '1somename', '2008-10-24 15:45:49'],

['7', '22', '3', '2somename', '2008-10-24 15:45:51']

]

我希望能够

使用函数对列表重新排序,以便我可以按列表中的每个项目分组。 例如,我希望能够按第二列分组(以便所有21列在一起)

使用函数仅显示每个内部列表中的某些值。 例如,我想减少此列表,使其仅包含“ 2somename”的第四个字段值

所以列表看起来像这样

[

['3', '22', '4', '2somename', '2008-10-24 15:22:03'],

['7', '22', '3', '2somename', '2008-10-24 15:45:51']

]

m3clov3n asked 2020-08-10T09:14:34Z

8个解决方案

62 votes

对于第一个问题,您应该做的第一件事是使用运算符模块中的itemgetter按第二个字段对列表进行排序:

x = [

['4', '21', '1', '14', '2008-10-24 15:42:58'],

['3', '22', '4', '2somename', '2008-10-24 15:22:03'],

['5', '21', '3', '19', '2008-10-24 15:45:45'],

['6', '21', '1', '1somename', '2008-10-24 15:45:49'],

['7', '22', '3', '2somename', '2008-10-24 15:45:51']

]

from operator import itemgetter

x.sort(key=itemgetter(1))

然后,您可以使用itertools的groupby函数:

from itertools import groupby

y = groupby(x, itemgetter(1))

现在y是一个包含(元素,项目迭代器)元组的迭代器。 解释这些元组比显示代码更令人困惑:

for elt, items in groupby(x, itemgetter(1)):

print(elt, items)

for i in items:

print(i)

哪些打印:

21

[&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值