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

如何用fromkeys将列表转为值为索引的字典?求Python更优方法

使用fromkeys实现列表转索引字典及更优方案

一、用fromkeys的实现方法

dict.fromkeys() 默认会给所有键设置相同的初始值,要实现值为对应索引的需求,需要分两步操作:先通过fromkeys创建包含目标键的字典,再遍历列表更新每个键的值:

my_list = ["a", "b", "c", "d", "e"]
# 先创建以列表元素为键的字典,初始值为None
index_dict = dict.fromkeys(my_list)
# 遍历列表,为每个键赋值对应的索引
for idx, item in enumerate(my_list):
    index_dict[item] = idx

执行后得到结果:{"a":0, "b":1, "c":2, "d":3, "e":4}

注意:如果列表中存在重复元素,后续出现的元素会覆盖前面的索引值(因字典键具有唯一性)。

二、更高效的替代方案

上述fromkeys方法是两次O(n)遍历(创建字典+赋值),整体时间复杂度为O(n),但可以用一次遍历的方式完成,代码更简洁高效:

1. 字典推导式(推荐)

直接通过enumerate()遍历列表,同时生成键值对,一次循环完成字典构建:

my_list = ["a", "b", "c", "d", "e"]
index_dict = {item: idx for idx, item in enumerate(my_list)}

2. zip+range组合

将列表元素与对应的索引范围配对,再转换为字典,同样是一次O(n)操作:

my_list = ["a", "b", "c", "d", "e"]
index_dict = dict(zip(my_list, range(len(my_list))))

这两种方案的时间复杂度均为O(n),且仅需一次遍历,比fromkeys的两步操作更高效,代码也更易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:01:33