请求解析Python代码中{k: v for v, k in enumerate(a)}语句的逻辑
解析Python字典推导式:
{k: v for v, k in enumerate(a)} 先看原代码:
a = [1,2,3,4,4,2,2] d = {k: v for v, k in enumerate(a)} print(d)
1. 先拆enumerate(a)的作用
enumerate是Python自带的工具函数,遍历列表a时,会同时给每个元素配上它的索引位置(默认从0开始计数)。对这个列表来说,enumerate(a)会生成一串成对的数据:
(0, 1), (1, 2), (2, 3), (3, 4), (4, 4), (5, 2), (6, 2)
每一对里,第一个数是元素的索引(用变量v接收),第二个数是列表里的实际元素(用变量k接收)。
2. 字典推导式的运行逻辑
{k: v for v, k in enumerate(a)}是字典推导式,本质是用循环快速生成字典的语法:
- 每次从
enumerate(a)里取出一对(v, k) - 把元素
k当成字典的键,把索引v当成这个键对应的值 - 把这组键值对存入字典
注意:字典的键是唯一的,如果后续循环遇到重复的键,会直接覆盖之前的旧值。比如:
- 第一次遇到元素2时,索引是1,字典里存
2:1 - 后续再遇到元素2,索引是5,就把值改成5;最后一次遇到元素2,索引是6,最终值就变成6
3. 最终输出
运行代码后,print(d)会输出:
{1: 0, 2: 6, 3: 2, 4: 4}
内容的提问来源于stack exchange,提问作者Ashkii
相关产品推荐
相关产品推荐

