2017-03-24 176 views
0

我試圖將信息存儲在以後想要訪問的字典中。我正在動態使用變量,其中「badgeID」是一個全局計數器,我用它作爲鍵,值是從用戶處獲得的數組/列表。Python:使用變量的字典更新添加新密鑰,但用新密鑰替換舊值

Here is the screen shot

,當我嘗試將超過一個K補充問題:v到字典,它增加了一個按鍵,但與替換所有先前存儲的值(在這種情況下,它是一個數組/列表)最新的一個。任何幫助將非常感激。由於

+2

請將您的代碼*作爲格式文本*而不是圖像。 –

+0

NO。把*作爲原始問題格式化文本* ...你真的希望人們在評論中閱讀嗎? –

+0

@ juanpa.arrivillaga檢查帖子。 –

回答

1

,當我嘗試添加一個以上的k上的問題:V將 字典,它增加了一個按鍵,但與替換所有以前存儲的 值(在這種情況下,它是一個數組/列表)最新的一個。

解決這個問題的方法是,每一個鍵,badgeNum,新聞價值的一個列表,而不是一個單一的值。

>>> mydict = {} 
>>> mydict.setdefault(1234, []).append('first 1234') 
>>> mydict.setdefault(5678, []).append('first 5678') 
>>> mydict.setdefault(1234, []).append('second 1234') 
>>> mydict.setdefault(5678, []).append('second 5678') 
>>> mydict 
{1234: ['first 1234', 'second 1234'], 5678: ['first 5678', 'second 5678']} 

另一種方法是使用collections.defaultdict()這需要一點點更多的努力來建立,但使得它簡單(快一點)來添加新的值:

>>> from collections import defaultdict 
>>> mydict = defaultdict(list) 
>>> mydict[1234].append('first 1234') 
>>> mydict[5678].append('first 5678') 
>>> mydict[1234].append('second 1234') 
>>> mydict[5678].append('second 5678') 
>>> mydict 
defaultdict(<class 'list'>, {1234: ['first 1234', 'second 1234'], 5678: ['first 5678', 'second 5678']}) 
+0

對不起,沒有得到它。我對Python比較新,我一直在閱讀文檔,但無法弄清楚。所以你的意思是如果使用setdefault()會有幫助嗎?因爲我試過了,它不起作用。 –

+0

@RahulJoshi對不起,我發佈了錯誤的代碼片段。現在已經修復了。該技術是使用* dict.setdefault *或* collections.defaultdict *爲以前不可見的鍵創建新的空列表,並將新條目附加到該列表。 –

0

解決。這是一個愚蠢的錯誤。我試圖填充全局數組,然後每次通過使用「del myarray [:]」收到用戶輸入時清除數組。我只是爲了這個函數聲明瞭數組,並且它可以工作。

相關問題