Python dict and enumerate usage
本问题已经有最佳答案,请猛点这里访问。
我对使用dict时的一段python代码有点困惑:
1 2 3 4 | >>> 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} |
如何理解"i代表i,c代表枚举"(s)中的"c:i代表i,c"?有人能给我解释一下吗?
我将把这一行分成几行,这样更容易理解。以下代码与示例中的一行程序执行相同的操作:
1 2 3 4 5 6 7 | S ="ababcbacadefegdehijhklij" lindex = {} for count, letter in enumerate(S): lindex[letter] = count print(lindex) |
。
输出将是:
江户十一〔七〕号
(重要的是要注意字典值是随机显示的,因为顺序无关紧要。)
Enumerate所做的是遍历字符串中的每个字母,但同时输出字母和计数。因此,它将从
但是,需要注意的是,字典中只能有一个键,因此每次出现同一个字母时,都会替换它的字典值。
底线是,这将创建一个字典,记录字符串中每个字符的最后一次出现。以下是如何…
第一个
1 | print(*enumerate(['a', 'b', 'c'])) |
产量
1 | (0, 'a') (1, 'b') (2, 'c') |
号
由于
1 | (0, 'a') (1, 'b') (2, 'a') (3, 'b') (4, 'c') ... |
词典理解
其次,这个
1 | d = { x: x + 1 for x in range(3) } |
。产量
1 | {0: 1, 1: 2, 2: 3} |
字典理解用于创建一个字典,其中键是字符串
由于字典的键只能与单个值关联,因此只保留最后一个值,即字符出现的最后一个索引。
等效代码如果没有
1 2 3 4 5 6 | S ="ababcbacadefegdehijhklij" lindex = {} for i in range(len(lindex)): lindex[i] = S[i] |
。