我有几个这样的词典
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包下输入。
答案 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
创建了一个包含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)
或者
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,)
请注意,尾随逗号是必需的......