python - 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)}”?谁能给我一些解释?
解决方案
最重要的是,这会创建一个包含字符串中每个字符最后一次出现的字典。这是如何...
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]
推荐阅读
- go - Text rotation in go- go chart library
- r - Violin Plot showing number of observation ggplot
- javascript - 如何在车把上选择json项目
- postgresql - 为什么命令中有时间戳错误?
- android - 为什么 FAB 在 CardView 下设置 layout_anchorGravity
- c++ - qt custom class to QTreeView
- r - SMOTE Algorithm and Classification: overrated prediction success
- mysql - MySQL Arithmetic with FLOOR result does not increment
- ios - 在 iOS HTTP Live Stream (hls) 上捕获播放列表
- android-studio - 设置 Android Studio NDK 的问题