根据Python中的键获取排序列表的切片
是否可以根据某个键值(例如列表项的长度)对排序列表进行切片?如果是这样,如何?
例如,我得到一个这样的排序列表:
sorted_list = sorted(some_list, key=len)
现在我想得到一个切片,其中包含所有具有最低和相等 len 的项目(即 len: 的所有项目min(sorted_list, key=len)),它应该是排序列表的头部。
回答
您可以先对项目进行分组,然后获取第一个结果子迭代器的元素。
from itertools import groupby
firsts = list(next(groupby(sorted(some_list, key=len), len))[1])
例如,
>>> some_list = [[1, 2, 3], [4, 5, 6], [1], [2], [2, 3]]
>>> list(next(groupby(sorted(some_list, key=len), len))[1])
[[1], [2]]