此代碼將新值直接附加到元組。但是,元組應該是不可更改的。有人可以解釋這里發生了什么嗎?
word_frequency = [('hello', 1), ('my', 1), ('name', 2),
('is', 1), ('what', 1), ('?', 1)]
def frequency_to_words(word_frequency):
frequency2words = {}
for word, frequency in word_frequency:
if frequency in frequency2words:
frequency2words[frequency].append(word)
else:
frequency2words[frequency] = [word]
return frequency2words
print(frequency_to_words(word_frequency))
結果:{1: ['hello', 'my', 'is', 'what', '?'], 2: ['name']}
uj5u.com熱心網友回復:
這一行列出了一個串列 []
frequency2words[frequency] = [word]
這就是您要附加()的內容。
但是你可以這樣做(1,2) (3,4),Python 會創建一個更大的元組來保存四個東西并將它們復制進去,讓它看起來像它作業。你不能做的是改變 () 元組的內容:
>>> t = (1,2)
>>> t[0] = 5
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
t[0] = t
TypeError: 'tuple' object does not support item assignment
uj5u.com熱心網友回復:
該.append()操作是在frequency2words字典中的串列值上完成的,而不是在word_frequency.
您可以使用 重寫代碼以使其更簡潔.setdefault(),這也應該更清楚您要附加的內容。
def frequency_to_words(word_frequency):
frequency2words = {}
for word, frequency in word_frequency:
frequency2words.setdefault(frequency, []).append(word)
return frequency2words
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/478232.html
標籤:Python python-3.x 元组
