Tra*_*ang 3 dictionary python-3.x
我有好几本这样的字典
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}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用代码将它们组合成一本字典
dicts = dict1, dict2, dict3
Run Code Online (Sandbox Code Playgroud)
它返回这样的结果
({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})
Run Code Online (Sandbox Code Playgroud)
但是,如果字典按顺序出现呢?我怎样才能得到相同的结果?我尝试了以下代码
dicts = {}
dicts = dicts, dict1
dicts = dicts, dict2
dicts = dicts, dict3
Run Code Online (Sandbox Code Playgroud)
但它返回这样的结果
((({}, {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})
Run Code Online (Sandbox Code Playgroud)
我们怎样才能删除第一个东西?我在 Windows 7 上使用 python 3。所有字典都在 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)
Run Code Online (Sandbox Code Playgroud)
正如@MMF 在他的评论中已经指出的那样:a, b, c创建一个包含a,b和c(按该顺序)的元组。
你想要做的是“更新”字典:
dict = {}
dict.update(dict1)
dict.update(dict2)
dict.update(dict3)
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想要dict3或dict2覆盖内容:
dict = {}
dict.update(dict3)
dict.update(dict2)
dict.update(dict1)
Run Code Online (Sandbox Code Playgroud)
或者
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)
Run Code Online (Sandbox Code Playgroud)
但是,如果您只想要一个包含所有字典的元组,请使用以下命令:
dict = dict1, dict2
dict += dict3,
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31056 次 |
| 最近记录: |