在python中按顺序将多个词典附加到一个词典中

时间:2016-11-26 15:46:38

标签: python-3.x dictionary

我有几个这样的词典

dict1 = {0: 33.422, 1: 39.2308, 2: 30.132}
dict2 = {0: 42.2422, 1: 43.342, 2: 42.424}
dict3 = {0: 13.422, 1: 9.2308, 2: 20.132}

我知道我可以使用代码将它们组合成一个字典

dicts = dict1, dict2, dict3

它会返回像这样的结果

({0: 33.422, 1: 39.2308, 2: 30.132}, {0: 42.2422, 1: 43.342, 2: 42.424}, {0: 13.422, 1: 9.2308, 2: 20.132})

然而,如果词典顺序出现怎么办?我怎样才能得到相同的结果?我尝试了以下代码

dicts = {}
dicts = dicts, dict1
dicts = dicts, dict2
dicts = dicts, dict3

但它会返回像这样的结果

((({}, {0: 33.422, 1: 39.2308, 2: 30.132}), {0: 42.2422, 1: 43.342, 2: 42.424}), {0: 13.422, 1: 9.2308, 2: 20.132})

我们如何删除第一个东西?我在Windows 7上使用python 3.而且所有的词典都在" MyDataFileReader"在avro包下输入。

3 个答案:

答案 0 :(得分:2)

如果我理解正确,你需要一个词典列表:

dict1 = {0: 33.422, 1: 39.2308, 2: 30.132}
dict2 = {0: 42.2422, 1: 43.342, 2: 42.424}
dict3 = {0: 13.422, 1: 9.2308, 2: 20.132}
dicts = []
dicts.append(dict1)
dicts.append(dict2)
dicts.append(dict3)

答案 1 :(得分:1)

正如@MMF已经在评论中说明的那样:a, b, c创建了一个包含abc的元组(按此顺序)。

你想做什么,是"更新"字典:

dict = {}
dict.update(dict1)
dict.update(dict2)
dict.update(dict3)

或者,如果您不希望dict3dict2覆盖内容:

dict = {}
dict.update(dict3)
dict.update(dict2)
dict.update(dict1)

或者

def update_without_overwriting(d, x):
    dict.update({k: v for k, v in x.items() if k not in d})

dict = {}
update_without_overwriting(dict, dict1)
update_without_overwriting(dict, dict2)
update_without_overwriting(dict, dict3)

如果你只想要一个包含所有dicts的元组,请使用:

dict = dict1, dict2
dict += dict3,

答案 2 :(得分:0)

从您的示例的第一部分开始,您似乎正在尝试获取字典元组,而不是字典的字典。所以试试这个:

dicts = ()
dicts = dicts + (dict1,)
dicts = dicts + (dict2,)
dicts = dicts + (dict3,)

请注意,尾随逗号是必需的......

相关问题