2012-12-08 103 views
-2

我卡在下面的代碼:Python的迭代字典中的

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

我是新來的蟒蛇,我很困惑的鍵和值如何設置地圖,任何洞察到這一過程將不勝感激。

+0

您對哪一點感到困惑?打印什麼解釋代碼的作用? –

+0

爲了解釋代碼的作用 – user203927

+0

我想人們都在想,如果你對列表/詞典的理解有困惑,或者你對一般的詞典感到困惑? – jdi

回答

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之前,它會在是這個樣子的列表理解:

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) 
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開始。