我是 python 的新手,希望得到一些帮助,如果有人能提供帮助,我将不胜感激,
我有一个下面的 python 列表列表,我想形成一个新列表,它将包含基于子列表第一个元素的最后一个子列表,例如。 ISIN=BE0974302342,我只想将 ['BE0974302342', 21, 19, 0, 2, 0] 添加到新列表并忽略所有第一次出现,我想使用 for 循环将每个子列表的第一个元素与第一个元素进行比较第二个子列表,但这不是一个干净的方法,这可以使用列表理解或一些内置方法来实现吗?
my_list = [['BE0974302342', 21, 0, 0, 0, 0],
['BE0974302342', 21, 19, 0, 0, 0],
['BE0974302342', 21, 19, 0, 2, 0],
['FR0000073843', 22, 19, 0, 2, 0],
['FR0000073843', 22, 20, 0, 2, 0],
['FR0000073843', 22, 20, 0, 2, 0],
['FR0000076861', 21, 20, 0, 2, 0],
['FR0000076861', 21, 18, 0, 2, 0],
['FR0000076861', 21, 18, 3, 2, 0],
['FR0000076861', 21, 18, 3, 3, 0]]
new_list = [['BE0974302342', 21, 19, 0, 2, 0],
['FR0000073843', 22, 20, 0, 2, 0],
['FR0000076861', 21, 18, 3, 3, 0]]
请您参考如下方法:
你可以使用 itertools.groupby按第一个元素对子列表进行分组,并保留每组的最后一个子列表:
from itertools import groupby
from operator import itemgetter
[list(v)[-1] for _,v in groupby(my_list, key=itemgetter(0))]
输出
[['BE0974302342', 21, 19, 0, 2, 0],
['FR0000073843', 22, 20, 0, 2, 0],
['FR0000076861', 21, 18, 3, 3, 0]]
