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

新手上路,请多包涵

我有好几本这样的词典

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。所有词典都在 avro 包下的“MyDataFileReader”类型中。

原文由 Tracy Yang 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 574
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)

原文由 Wayne Werner 发布,翻译遵循 CC BY-SA 3.0 许可协议

As @MMF already stated in his comment: a, b, c creates a tuple containing a , b and c (in that order).

你想要做的是“更新”字典:

 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)

但是,如果您只想要一个包含所有字典的元组,请使用:

 dict = dict1, dict2
dict += dict3,

原文由 CodenameLambda 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进