我坚持以下代码:
nonsense = 'faxoyk'
R = {CHR : 'afokyx'.index(CHR) for CHR in nonsense}
print R
我是 python 新手,我对如何设置键和值感到困惑,对此过程的任何见解将不胜感激。
我坚持以下代码:
nonsense = 'faxoyk'
R = {CHR : 'afokyx'.index(CHR) for CHR in nonsense}
print R
我是 python 新手,我对如何设置键和值感到困惑,对此过程的任何见解将不胜感激。
字典理解是列表理解之后出现的一个功能,在 python 中:
列表理解
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)
如何在字典中设置键和值?
假设你有字典:
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 开始。