Mik*_*man 2 python list sublist
我有一个嵌套列表,列表中有两个值,一个单词和一个数字(按第一个值排序 - 单词):
data=[["apple",2],["cake",5],["cake",8],["chocolate",3],["chocolate",9],["chocolate",10],["grapes",6]]
Run Code Online (Sandbox Code Playgroud)
我怎样才能使它尽可能有效地将具有相同单词的项目组合在一起? 所以要使列表看起来像这样:
data=[ [["apple",2]], [["cake",5],["cake",8]], [["chocolate",3],["chocolate",9],["chocolate",10]],[["grapes",6]] ]
Run Code Online (Sandbox Code Playgroud)
"apple"和"grape"是他们自己的列表,因为它们只在原始列表中出现一次.
怎么可以这样做?谢谢 :)
它的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]]]
>>>
Run Code Online (Sandbox Code Playgroud)
您可以使用operator.iemgetter作为您的sorted函数的关键groupby!