我卡在下面的代碼:Python的迭代字典中的
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中的功能:
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)
如何鍵和值在字典中獲取設置?
假設你有字典:
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開始。
您對哪一點感到困惑?打印什麼解釋代碼的作用? –
爲了解釋代碼的作用 – user203927
我想人們都在想,如果你對列表/詞典的理解有困惑,或者你對一般的詞典感到困惑? – jdi