如何将新的键值对添加到字典中,其中value是数组的数组

时间:2017-08-17 08:33:31

标签: python arrays dictionary

我在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']]] }

当然我不想要这个包装好的数组。拜托,你能帮帮我吗?非常感谢你。

2 个答案:

答案 0 :(得分:5)

由于您已经传递了列表,因此不要再将它们包装在方括号中。这就足够了:

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

输出:

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

答案 1 :(得分: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)