PYTHON:将嵌套列表中相同值的子列表创建为一个列表
PYTHON: Create sublists of same values from nested list into one list
我有一个嵌套列表,其中包含两个值的列表,一个单词和一个数字(按第一个值 - 单词排序):
data=[["apple",2],["cake",5],["cake",8],["chocolate",3],["chocolate",9],["chocolate",10],["grapes",6]]
我怎样才能让它尽可能有效地将具有相同单词的项目组合在一起?
所以要使列表看起来像这样:
data=[ [["apple",2]], [["cake",5],["cake",8]], [["chocolate",3],["chocolate",9],["chocolate",10]],[["grapes",6]] ]
"apple" 和 "grapes" 是它们自己的列表,因为它们在原始列表中只出现一次。
这是怎么做到的?谢谢:)
这就是 itertools.groupby
的用途:
>>> from operator import itemgetter
>>> from itertools import groupby
>>> data=[["apple",2],["cake",5],["cake",8],["chocolate",3],["chocolate",9],["chocolate",10],["grapes",6]]
>>> [list(g) for _,g in groupby(sorted(data,key=itemgetter(0)),itemgetter(0))]
[[['apple', 2]], [['cake', 5], ['cake', 8]], [['chocolate', 3], ['chocolate', 9], ['chocolate', 10]], [['grapes', 6]]]
>>>
您可以使用 operator.iemgetter 作为 sorted
函数的键和 groupby
!
我有一个嵌套列表,其中包含两个值的列表,一个单词和一个数字(按第一个值 - 单词排序):
data=[["apple",2],["cake",5],["cake",8],["chocolate",3],["chocolate",9],["chocolate",10],["grapes",6]]
我怎样才能让它尽可能有效地将具有相同单词的项目组合在一起? 所以要使列表看起来像这样:
data=[ [["apple",2]], [["cake",5],["cake",8]], [["chocolate",3],["chocolate",9],["chocolate",10]],[["grapes",6]] ]
"apple" 和 "grapes" 是它们自己的列表,因为它们在原始列表中只出现一次。
这是怎么做到的?谢谢:)
这就是 itertools.groupby
的用途:
>>> from operator import itemgetter
>>> from itertools import groupby
>>> data=[["apple",2],["cake",5],["cake",8],["chocolate",3],["chocolate",9],["chocolate",10],["grapes",6]]
>>> [list(g) for _,g in groupby(sorted(data,key=itemgetter(0)),itemgetter(0))]
[[['apple', 2]], [['cake', 5], ['cake', 8]], [['chocolate', 3], ['chocolate', 9], ['chocolate', 10]], [['grapes', 6]]]
>>>
您可以使用 operator.iemgetter 作为 sorted
函数的键和 groupby
!