字典中的Python迭代

字典中的Python迭代,python,dictionary,iteration,Python,Dictionary,Iteration,我被以下代码卡住了: nonsense = 'faxoyk' R = {CHR : 'afokyx'.index(CHR) for CHR in nonsense} print R 我是python新手,对如何设置键和值感到困惑,如果能深入了解这个过程,我将不胜感激 在python中,字典理解是列表理解之后的一项功能: 无意义是一个字符串。但它是一个序列对象,因此在无意义中使用CHR的循环表示在每个字符上循环: print [CHR for CHR in nonsense] #['f', '

我被以下代码卡住了:

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

我是python新手,对如何设置键和值感到困惑,如果能深入了解这个过程,我将不胜感激

在python中,字典理解是列表理解之后的一项功能:

无意义
是一个字符串。但它是一个序列对象,因此在无意义中使用CHR的
循环表示在每个字符上循环:

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
,并将该键的值设置为字符串literal
“afokyx”
CHR
的索引

在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']
您可以在初始化过程中设置键和值PAR,如下所示:

 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中iterable对象的索引从0开始。

您对哪一位感到困惑?打印的内容是否解释了代码的作用?为了解释代码的作用,我想人们会想,你是对列表/笔录理解感到困惑,还是对字典感到困惑?哦,对不起,是关于列表/笔录理解,但你在下面做了完美的解释。非常感谢。