Python list转dict问题:合并多个dict为单一dict
合并多个字典为单一字典的解决方法
嘿,我明白你遇到的问题了!你之前尝试用{newlist[0], newlist[1], newlist[2]}的方式转换,确实会失败——因为在Python里,用大括号直接包裹多个字典会创建一个集合,而字典是不可哈希的类型,不能被放入集合里,而且这也根本不是构建字典的正确方式。
下面给你几种简单可靠的方法来合并列表里的所有字典:
方法1:循环遍历+update()(兼容所有Python版本)
这是最直观且兼容性最好的方式,逐个把每个字典的键值对更新到新字典里:
list_of_dicts = [{'key1': 'val1', 'key2': 2, 'key3': 3}, {'key4': 'val4', 'key5': 5, 'key6': 6}, {'key7': 'val7', 'key8': 8, 'key9':9}] merged_dict = {} for d in list_of_dicts: merged_dict.update(d) print(merged_dict) # 输出: {'key1': 'val1', 'key2': 2, 'key3': 3, 'key4': 'val4', 'key5': 5, 'key6': 6, 'key7': 'val7', 'key8': 8, 'key9': 9}
方法2:字典解包(Python 3.5+)
如果你的Python版本是3.5及以上,这种写法更简洁:
merged_dict = {**list_of_dicts[0], **list_of_dicts[1], **list_of_dicts[2]}
如果列表里的字典数量不确定,也可以结合循环解包:
merged_dict = {} for d in list_of_dicts: merged_dict = {**merged_dict, **d}
方法3:functools.reduce+字典合并运算符(Python 3.9+)
Python 3.9引入了|运算符来合并字典,搭配reduce可以快速处理列表:
from functools import reduce merged_dict = reduce(lambda a, b: a | b, list_of_dicts)
注意事项
如果列表里的字典存在重复键,后面的字典会覆盖前面的键值对,这是所有合并方法的默认行为,比如如果第一个字典有'key1': 'old',第三个字典有'key1': 'new',最终结果里'key1'的值会是'new'。
内容的提问来源于stack exchange,提问作者richman2
相关产品推荐
相关产品推荐

