You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让嵌套列表的首个元素匹配另一列表的元素顺序?

按指定列表顺序重排嵌套列表

需求是将嵌套列表list2中的子元素,按照list1里元素的顺序重新排列,使得每个子列表的首个元素与list1对应位置的元素一致。

示例数据

list1 = [3, 7, 1, 10, 4]
list2 = [[1,0],[3,2],[4,11],[7,9],[10,1]]

# 目标结果
newlist = [[3,2],[7,9],[1,0],[10,1],[4,11]]

高效解决方案:字典映射法

利用字典的O(1)查找特性,先构建list2的元素映射,再按list1顺序生成新列表:

list1 = [3, 7, 1, 10, 4]
list2 = [[1,0],[3,2],[4,11],[7,9],[10,1]]

# 构建首个元素到子列表的映射
item_dict = {sublist[0]: sublist for sublist in list2}
# 按list1顺序提取对应子列表
newlist = [item_dict[num] for num in list1]

print(newlist)

这种方法时间复杂度为O(n+m)(n是list2长度,m是list1长度),处理大数据量时效率远高于遍历查找。如果list1中存在list2没有的元素,可以用item_dict.get(num, [])替代,避免抛出KeyError。

简洁解决方案:遍历查找法

如果数据量较小,也可以直接用列表推导式结合遍历查找:

newlist = [next(sublist for sublist in list2 if sublist[0] == num) for num in list1]

这种方法代码更简洁,但每次查找都要遍历list2,时间复杂度为O(n*m),数据量大时不建议使用。

内容的提问来源于stack exchange,提问作者nsp077

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 03:20:15