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

如何用字典实现向列表指定索引插入对应值?

问题解答:用字典实现LeetCode元素插入对应索引位置?

问题背景

现有两个列表:nums = [1, 5, 3]、index = [0, 1, 2],需要将nums中的元素插入到新列表对应index的位置。已用while loop解决问题,现在尝试用字典实现,写出了如下代码:

list2 = []

ans = dict(zip(nums, index))
        
list2.insert(someindex, somenumber)

想知道如何访问字典中的数据,替换someindex和somenumber,以及此方法是否可行。

字典数据的访问方式

你用dict(zip(nums, index))生成的字典结构是{1: 0, 5: 1, 3: 2},也就是键为nums的元素,值为对应的index。要遍历字典的键值对,可以用items()方法,代码修改如下:

list2 = []
nums = [1, 5, 3]
index = [0, 1, 2]
ans = dict(zip(nums, index))
# 遍历字典的键值对,num是nums元素,idx是对应index
for num, idx in ans.items():
    list2.insert(idx, num)

此方法的可行性分析

这种方法不可行,核心原因有两个:

  • 顺序问题:Python 3.7之前的字典是无序的,遍历字典时的顺序和原nums、index的顺序可能不一致,会导致元素插入到错误的位置;即使是3.7+的有序字典,用字典存储这种对应关系也是冗余且没必要的。
  • 重复元素问题:如果nums中存在重复元素,字典的键会被覆盖,丢失原始的索引信息。比如nums = [1, 1, 3]、index = [0, 1, 2]时,生成的字典会是{1: 1, 3: 2},第一个1对应的索引0会直接丢失。

更优的实现方式

不需要借助字典,直接遍历zip(nums, index)的结果即可,既保留顺序,又能处理重复元素:

list2 = []
nums = [1, 5, 3]
index = [0, 1, 2]
for num, idx in zip(nums, index):
    list2.insert(idx, num)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:10:32