首页 > 解决方案 > Python dict 和枚举用法

问题描述

我对使用dict的一段python代码有点困惑:

>>> S = "ababcbacadefegdehijhklij"
>>> lindex = {c: i for i, c in enumerate(S)}
>>> lindex
{'a': 8, 'c': 7, 'b': 5, 'e': 15, 'd': 14, 'g': 13, 'f': 11, 'i': 22, 'h': 19, 'k': 20, 'j': 23, 'l': 21}

如何理解“{c: i for i, c in enumerate(S)}”?谁能给我一些解释?

标签: python

解决方案


最重要的是,这会创建一个包含字符串中每个字符最后一次出现的字典。这是如何...

enumerate

首先enumerate返回一个可迭代的元素,其中元素是索引和值的元组。

例子

print(*enumerate(['a', 'b', 'c']))

输出

(0, 'a') (1, 'b') (2, 'c')

因为S是一个可迭代的字符串,enumerate(S)所以返回一个对应于...的迭代器

(0, 'a') (1, 'b') (2, 'a') (3, 'b') (4, 'c') ...

字典理解

其次,这个enumerate对象被字典理解使用,这是一种创建字典的简洁方式。

例子

d = { x: x + 1 for x in range(3) }

输出

{0: 1, 1: 2, 2: 3}

字典理解用于创建字典,其中键是字符串中的字母,项目S是字符的索引。

由于字典的键只能与单个值相关联,因此只保留最后一个值,字符出现的最后一个索引。

等效代码

没有enumerate和字典理解,代码相当于......

S = "ababcbacadefegdehijhklij"

lindex = {}

for i in range(len(lindex)):
    lindex[i] = S[i]

推荐阅读