2017-08-17 42 views
2

我有我的字典裏的這種結構在python的數組:如何添加新鍵值對到字典,其中值是數組

dict={'key1': [['val1','val2'], ['val1','val2'], ['val1','val2']],....} 

我想寫功能添加新鍵值對。這是方法:

def AddNewPair(key, firstArr, secondArr, thirdArr): 
    myDict.update({key:[[firstArr],[secondArr],[thirdArr]]}); 

函數調用的例子是在這裏:

AddNewPair("key2",["val1","val2"],["val1","val2"],["val1","val2"]); 

此功能,但不正確。它幾乎像預期的那樣添加了新的鍵值對,但是值(數組數組)被另一個不必要的數組包裹。所以,結果是這樣的:

dict={'key1': [['val1','val2'], ['val1','val2'], ['val1','val2']],'key2': [[['val1','val2'], ['val1','val2'], ['val1','val2']]] } 

當然我不想要這個包裹數組。請,你能幫我解決這個問題嗎?非常感謝你。

回答

5

由於您已經通過列表,請不要將它們再次放在方括號中。這是不夠的:

myDict.update({key:[firstArr, secondArr, thirdArr]}) 

輸出:

{'key1': [['val1', 'val2'], ['val1', 'val2'], ['val1', 'val2']], 
'key2': [['val1', 'val2'], ['val1', 'val2'], ['val1', 'val2']]} 
+0

非常感謝,它按預期工作。 :))) – user2095405

1

可能,使用defaultdict會做的魅力典雅。它創建一個特定類型的值 ,並將其與一個密鑰相關聯,只要請求的密鑰 尚不存在。如果密鑰存在,則在'獲取項目'時返回現有值 。

因此,在下面的情況下,可以使用成員函數.append().extend(),因爲假定返回的對象是list是安全的。

from collections import defaultdict 

myDict = defaultdict(list) 

def AddNewPair(Key, Pair): 
    myDict[Key].append(Pair) 

def AddNewPairList(Key, PairList): 
    myDict[Key].extend(PairList) 
相關問題