我試圖將信息存儲在以後想要訪問的字典中。我正在動態使用變量,其中「badgeID」是一個全局計數器,我用它作爲鍵,值是從用戶處獲得的數組/列表。Python:使用變量的字典更新添加新密鑰,但用新密鑰替換舊值
,當我嘗試將超過一個K補充問題:v到字典,它增加了一個按鍵,但與替換所有先前存儲的值(在這種情況下,它是一個數組/列表)最新的一個。任何幫助將非常感激。由於
我試圖將信息存儲在以後想要訪問的字典中。我正在動態使用變量,其中「badgeID」是一個全局計數器,我用它作爲鍵,值是從用戶處獲得的數組/列表。Python:使用變量的字典更新添加新密鑰,但用新密鑰替換舊值
,當我嘗試將超過一個K補充問題:v到字典,它增加了一個按鍵,但與替換所有先前存儲的值(在這種情況下,它是一個數組/列表)最新的一個。任何幫助將非常感激。由於
,當我嘗試添加一個以上的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']})
對不起,沒有得到它。我對Python比較新,我一直在閱讀文檔,但無法弄清楚。所以你的意思是如果使用setdefault()會有幫助嗎?因爲我試過了,它不起作用。 –
@RahulJoshi對不起,我發佈了錯誤的代碼片段。現在已經修復了。該技術是使用* dict.setdefault *或* collections.defaultdict *爲以前不可見的鍵創建新的空列表,並將新條目附加到該列表。 –
解決。這是一個愚蠢的錯誤。我試圖填充全局數組,然後每次通過使用「del myarray [:]」收到用戶輸入時清除數組。我只是爲了這個函數聲明瞭數組,並且它可以工作。
請將您的代碼*作爲格式文本*而不是圖像。 –
NO。把*作爲原始問題格式化文本* ...你真的希望人們在評論中閱讀嗎? –
@ juanpa.arrivillaga檢查帖子。 –