如何合并两个含字典的Python列表,得到指定格式的结果?
解决方案
你的问题核心是混淆了列表操作和字典合并的逻辑:a是包含多个单键字典的列表,b是包含一个多键字典的列表,你需要的是把a里所有字典的键值对合并到b的字典中,而不是对列表做拼接/扁平化。
代码实现
a = [{'Work': 'R'}, {'Area': 'S0'}, {'Type': 'PIV'}, {'Disc': 'LA'}, {'L': 'A'}] b = [{'Key': '9', 'FileName': '123A.pdf', 'Code': '1', 'Type': 'PNHRG'}] # 复制b中的字典,避免修改原数据 merged_dict = b[0].copy() # 遍历a中的每个字典,将键值对合并到merged_dict for single_dict in a: merged_dict.update(single_dict) # 包装成列表形式得到结果 result = [merged_dict] print(result)
关键说明
之前方法无效的原因
extend/append是列表操作,只会把元素添加到列表中,不会合并字典内容;- 列表扁平化方案针对的是嵌套列表(比如
[[1,2],[3,4]]转成[1,2,3,4]),和字典合并逻辑无关,因此不适用。
重复键的注意点
你期望的输出里出现了两个Type键,但Python字典的键是唯一的,后续合并的Type: 'PIV'会覆盖原字典中的Type: 'PNHRG'。如果确实需要保留重复键的信息,得改用其他数据结构(比如包含键值对元组的列表),但这不符合标准字典的定义。
内容的提问来源于stack exchange,提问作者RRP
相关产品推荐
相关产品推荐

