我在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']]] }
当然我不想要这个包装好的数组。拜托,你能帮帮我吗?非常感谢你。
答案 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)