如何为给定的每个键创建对应字典值?Python列表转目标字典方法
Python列表转「元素为键、索引为值」字典的实现方法
你要的效果是把列表['a','b','c']转为{'a':0, 'b':1, 'c':2},常用实现方式有以下3种,优先推荐第一种写法:
- 方法1:字典推导式 +
enumerate()(最简洁、最高效的Python原生写法)
直接通过遍历枚举对象组装字典,代码可读性和执行效率都最优:
运行后l = ['a', 'b', 'c'] d = {key: index for index, key in enumerate(l)}d的输出就是你期望的{'a': 0, 'b': 1, 'c': 2}。 - 方法2:
dict()构造函数 +zip()配对
如果不想用推导式,也可以把键序列和值序列配对后直接传给字典构造函数:
其中l = ['a', 'b', 'c'] d = dict(zip(l, range(len(l))))range(len(l))会生成从0开始、长度和原列表一致的整数序列,zip()会把同位置的列表元素和整数拼成键值对。 - 方法3:显式循环赋值(适合需要加自定义逻辑的场景)
如果生成字典的过程中需要对键或者值做额外处理,可以用最直白的循环写法,扩展性更强:l = ['a', 'b', 'c'] d = {} for index, key in enumerate(l): # 此处可添加自定义过滤、值转换等逻辑 d[key] = index
注意:如果原列表中存在重复元素,靠后出现的重复元素会覆盖之前同键对应的值,这是Python字典键唯一的特性决定的。
内容的提问来源于stack exchange,提问作者titutubs
相关产品推荐
相关产品推荐

