Skip to main content
 首页 » 编程设计

python之使用 Python 中每个列表的最后一个元素

2025年05月04日10lidabo

我在 Python 中有这个列表列表:

[[100,XHS,0], 
[100,34B,3], 
[100,42F,1], 
[101,XHS,2], 
[101,34B,5], 
[101,42F,2], 
[102,XHS,1], 
[102,34B,2], 
[102,42F,0], 
[103,XHS,0], 
[103,34B,4], 
[103,42F,2]] 

我想找到最有效的方法(我正在处理大量数据)使用每个列表的最后一个元素为每个 id(第一个元素)创建一个新的列表列表。 所以对于上面的示例列表,我的结果是:

[[0,3,1], 
[2,5,2], 
[1,2,0], 
[0,4,2]] 

我如何在 Python 中实现它?谢谢

请您参考如下方法:

分解构建 block 的 itertools 方法 - 获取最后的元素,分成三组,将 3 组转换为列表...

from operator import itemgetter 
from itertools import imap, izip 
 
last_element = imap(itemgetter(-1), a) 
in_threes = izip(*[iter(last_element)] * 3) 
res = map(list, in_threes) 
# [[0, 3, 1], [2, 5, 2], [1, 2, 0], [0, 4, 2]] 

但是,看起来您想对第一个元素进行“分组”(而不是纯粹的 3 个连续项的 block ),因此您可以为此使用 defaultdict:

from collections import defaultdict 
dd = defaultdict(list) 
for el in a: 
    dd[el[0]].append(el[-1]) 
 
# defaultdict(<type 'list'>, {100: [0, 3, 1], 101: [2, 5, 2], 102: [1, 2, 0], 103: [0, 4, 2]})