字典中的Python迭代

时间:2012-12-08 15:44:52

标签: python dictionary iteration

我坚持使用以下代码:

nonsense = 'faxoyk'
R = {CHR : 'afokyx'.index(CHR) for CHR in nonsense}
print R

我是python的新手,我对如何设置键和值感到困惑,对此过程的任何见解都将非常感激。

2 个答案:

答案 0 :(得分:2)

字典理解是列表理解之后的一个特性,在python:
List Comprehensions

nonsense是一个字符串。但它是一个序列对象,所以使用for CHR in nonsense循环它意味着你循环遍历每个字符:

print [CHR for CHR in nonsense]
#['f', 'a', 'x', 'o', 'y', 'k']

循环的值部分本身就是这样:

['afokyx'.index(CHR) for CHR in nonsense]
[1, 0, 5, 2, 4, 3]

当您执行字典理解时,在每个循环中,CHR是字符串中的字符。您要求它将CHR的密钥和该密钥的值设置为字符串文字CHR"afokyx"的索引

在python2.7之前(在介绍dict理解之前),它在列表理解中看起来像这样:

print [(CHR, 'afokyx'.index(CHR)) for CHR in nonsense]
# [('f', 1), ('a', 0), ('x', 5), ('o', 2), ('y', 4), ('k', 3)]
R = dict((CHR, 'afokyx'.index(CHR)) for CHR in nonsense)

答案 1 :(得分:0)

  

如何在字典中设置键和值?

假设你有字典:

d = {}

将值设置为您要执行的操作:

d['key'] = 'value'

得到:

 d['key']

您可以在初始化期间设置键和值,如下所示:

 d = {'key':'value'}

但是你已经处理了字典理解。这是一个有点高级的东西:

R = {CHR : 'faxoyk'.index(CHR) for CHR in nonsense}

你可以理解这一行:

nonsense = 'faxoyk'
R = {}
for CHR in nonsense:
    R[CHR] = 'faxoyk'.index(CHR)

print R

每个字符串都有方法index()

string.index()返回此字符串中某个字母的索引。例如:字符串'faxoyk'中字母'x'的索引是2,字母'f'的索引是0,依此类推。这是因为Python中可迭代对象的索引从0开始。