2016-01-31 418 views
-1

因此,我只是試圖將包含一組數字的列表附加到當前是列表的字典中的值。將列表附加到Python中的字典中的列表中

我不知道它是否重要,但字典中的某些列表是空的,有些包含整數。

我認爲這將是簡單的,並試圖給我最明顯的東西,這是列表附加到這樣的價值。

middlenumberdic[y].append(numberlist) 

然而,這給了我以下錯誤:

middlenumberdic[y].append(numberlist) 
KeyError: 786 

所以我決定,問題是,名單無法列出apppend,所以我把它分成單獨整數

for value in numberlist: 
    middlenumberdic[y].append(value) 

但這只是給了我相同的KeyError的東西

middlenumberdic[y].append(value) 
KeyError: 792 

從我的角度來看,我會認爲middlenumberdic[y]將返回[123,456,789](因爲這是分配給它),然後我可以追加到該列表,但顯然我不能。

在做所有這些之前,我嘗試了middlenumberdic[y] = numberlist,儘管這並沒有導致錯誤,但它所做的只是覆蓋了我現有的列表而不是添加到它。


閱讀How to append to a list in a dictionary?Append to a list within a dictionary後,我仍然沒有這就是爲什麼我已張貼這一明智的。

對於第一個問題,給出的答案與我使用的解決方案非常相似,但這個解決方案沒有起作用,另一個問題讓我難以理解。

這是我在這個網站上詢問的第一個問題,所以如果我做錯了什麼,我很抱歉。

P.S他們更劇本,但我只想到這將是neccesary

+0

顯然,字典'middlenumberdic'中沒有任何條目,鍵786或792 - 'middlenumberdic'包含的是什麼? –

+0

最好如果你創建[mcve]。目前尚不清楚你的輸入數據值是什麼。 –

+0

真的很抱歉,無法完全解決您的問題。你能提供樣本輸入和輸出,以便我們可以輕鬆理解嗎? –

回答

0

我認爲你正試圖與不存在的鍵訪問元素。所以,你得到這個KeyError。在這種情況下,

for value in numberlist: 
    middlenumberdic[y].append(value) 

下面替換此:

for value in numberlist: 
    middlenumberdic.setdefault(y,[]).append(value) 

我認爲現在應該工作。

+0

Thankyou,這工作完美。似乎我沒有用空值初始化字典。 –

+0

是的,你是對的。 'setdefault(key,[])'做的是,如果找不到密鑰,它會用空列表初始化密鑰。只有這樣你才能爲它添加一些價值。 –

1

你的問題是不是與附加部件。它是在字典中訪問您的列表。該KeyError意味着有不與指數786或792

In [1]: a = dict() 

In [2]: a[5] = [] 

In [3]: a 
Out[3]: {5: []} 

In [4]: a[5] 
Out[4]: [] 

In [5]: a[5].append([3,4,5]) 

In [6]: a 
Out[6]: {5: [[3, 4, 5]]} 
+0

對不起,我還沒有明白什麼是關鍵錯誤意味着 –