Python中如何正确合并两个字典列表?
嘿,我懂你遇到的问题了——本来想把两个字典列表平级合并,结果用append加copy搞出嵌套列表了对吧?别慌,这有几个简单好用的方法能达到你想要的效果:
方法1:用extend()直接修改原列表
这是最直接的方式,extend()会把另一个列表里的元素逐个追加到原列表末尾,而不是把整个列表当单个元素加进去:
l1 = [{'a':1},{'b':2},{'c':3}] l2 = [{'d':4},{'e':5},{'f':6}] l1.extend(l2) print(l1) # 输出: [{'a': 1}, {'b': 2}, {'c': 3}, {'d': 4}, {'e': 5}, {'f': 6}]
方法2:用列表拼接生成新列表
如果你不想改动原来的l1和l2,而是想要一个全新的合并列表,直接用+运算符就行:
l1 = [{'a':1},{'b':2},{'c':3}] l2 = [{'d':4},{'e':5},{'f':6}] merged_list = l1 + l2 print(merged_list) # 输出和上面一样的平级列表
方法3:简洁的解包语法(Python 3.5+)
用*解包两个列表的元素,再放到一个新列表里,语法很清爽:
merged_list = [*l1, *l2]
这个方法同样会生成新列表,不修改原数据。
为啥你原来的方法不行?
你用l1.append(l2.copy())时,append()的作用是把整个传入的对象(这里是l2.copy()得到的列表)作为单个元素添加到l1里,所以才会出现嵌套的情况。而extend()是遍历传入的列表,把每个元素单独加进去,这就是两者的核心区别~
内容的提问来源于stack exchange,提问作者road
相关产品推荐
相关产品推荐

