如何将Python列表转换为所有值均相同的字典
回答
你当前写的字典推导式已经是非常符合Pythonic规范的实现了,只有一个小冗余可以优化:推导式里变量e外面的括号没有必要保留,调整后写法如下:
converted_dict = {e: 1 for e in lst}
这种写法可读性极强,后续如果需要调整value的生成逻辑(比如替换成元素对应的索引、或者基于元素做计算),只需要修改冒号左侧的value部分即可,扩展性很好,适配所有场景。
还有一种更简洁、执行效率更高的Pythonic写法,是用Python内置的dict.fromkeys()方法实现:
converted_dict = dict.fromkeys(lst, 1)
- 这个是官方提供的专用字典构造方法,专门用来实现「将可迭代对象的所有元素作为key,设置统一默认value」的需求,完全贴合你的使用场景,代码更短表意更直接。
- CPython环境下这个方法是底层C语言实现的,处理大列表的时候性能会比纯Python层的字典推导式更高。
注意:如果你的默认value是列表、字典这类可变对象,不要使用
dict.fromkeys,因为所有key会共享同一个可变对象实例,修改其中一个值会导致所有值同步变化;你这里用的是不可变的整数1,不存在这个问题,可以放心使用。
内容的提问来源于stack exchange,提问作者Hello World
相关产品推荐
相关产品推荐

