Python 3.x 在python中,将多个词典按顺序追加到一个词典中
我有几本这样的字典Python 3.x 在python中,将多个词典按顺序追加到一个词典中,python-3.x,dictionary,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} ({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}) ((
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}
({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})
((({}, {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 = dict1, dict2, dict3
它会像这样返回结果
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}
({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})
((({}, {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
但它会像这样返回结果
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}
({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})
((({}, {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})
我们怎样才能去掉第一件东西?我在Windows7上使用Python3。所有字典都在avro软件包下的“MyDataFileReader”类型中。如果我理解正确,您需要字典列表:
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)
正如@MMF在他的评论中已经指出的:
a、b、c
创建一个元组,其中包含a
、b
和c
(按该顺序)
您要做的是“更新”词典:
dict = {}
dict.update(dict1)
dict.update(dict2)
dict.update(dict3)
或者,如果您不想让dict3
或dict2
覆盖内容:
dict = {}
dict.update(dict3)
dict.update(dict2)
dict.update(dict1)
或
但是,如果您只需要包含所有dict的元组,请使用以下命令:
dict = dict1, dict2
dict += dict3,
从示例的第一部分可以看出,您试图获取字典的元组,而不是dict的dict。所以试试这个:
dicts = ()
dicts = dicts + (dict1,)
dicts = dicts + (dict2,)
dicts = dicts + (dict3,)
请注意,后面的逗号是必需的…
dicts=dict1、dict2、dict3
将创建一个元组而不是一个字典。。。因此,您所做的只是创建元组的元组当使用“双赋值”时,dict=dicts,dict1,本质上是创建一个元组
。元组是不可变的,因此您不能使用以下行(dicts=dicts,dict2
等)向其添加任何内容。它只是创建一个包含旧元组的新元组。我不确定您想要什么作为最终数据类型。你能详细说明一下吗?你到底需要什么样的数据?您只是想合并多个词典吗?不能附加到词典dict
键是唯一的,因此您不能只在末尾添加另一个键。在您的示例中,每个dict都有一个0
键。如果您将DICT组合在一起,您希望这些键发生什么情况(应该发生在0:33.422
0:42.2422
和0:13.422
上)?在这种情况下可能很有用。