append multiple dictionaries into one dictionary sequentially in python
我有几本这样的字典
1 2 3 | 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} |
我知道我可以用代码把它们组合成一本字典。
1 | dicts = dict1, dict2, dict3 |
号
它返回这样的结果
1 | ({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}) |
但是,如果字典是按顺序排列的呢?我怎样才能得到相同的结果?我试过以下代码
1 2 3 4 | dicts = {} dicts = dicts, dict1 dicts = dicts, dict2 dicts = dicts, dict3 |
。
但它返回这样的结果
1 | ((({}, {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上使用python 3。所有的字典都在"mydatafilereader"类型的avro包下。
如果我理解正确,您需要字典列表:
1 2 3 4 5 6 7 | 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在其评论中所述:
你要做的是"更新"字典:
1 2 3 4 | dict = {} dict.update(dict1) dict.update(dict2) dict.update(dict3) |
号
或者,如果您不想让
1 2 3 4 | dict = {} dict.update(dict3) dict.update(dict2) dict.update(dict1) |
或
1 2 3 4 5 6 7 | 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的元组,请使用以下命令:
1 2 | dict = dict1, dict2 dict += dict3, |
从示例的第一部分来看,您似乎是在尝试获取字典的元组,而不是dict的dict。所以试试这个:
1 2 3 4 | dicts = () dicts = dicts + (dict1,) dicts = dicts + (dict2,) dicts = dicts + (dict3,) |
。
注意尾随逗号是必需的…