如何高效合并两个包含键值对列表,并去除重复元素?

合并列表中的数据

如何合并列表以获得所需的效果?考虑以下两个列表:

book1 = [{    "高校": ["南京大学", "天津大学", "南开大学"]}, {    "国家": ["印度", "美国"]}]book2 = [{    "高校": ["南京大学", "东华大学", "中南大学"]}, {    "国家": ["乌克兰", "俄罗斯"]}, {    "论坛": ["顶尖科学家论坛", "统计之都"]}]

目标是将这些列表合并成以下结构:

book3 = [{    "高校": ["南京大学", "天津大学", "南开大学", "东华大学", "中南大学"]}, {    "国家": ["印度", "美国", "乌克兰", "俄罗斯"]}, {    "论坛": ["顶尖科学家论坛", "统计之都"]}]

合并过程

合并过程中需要考虑以下几点:

遍历两个列表中所有字典项。检查键名是否存在于目标字典 book3 中。将键值附加到现有键或创建新键。确保键值是原值的并集(防止重复)。

以下代码演示了合并过程:

gx = []gj = []lt = []for i in book1[0]["高校"]:    gx.append(i)for i in book1[1]["国家"]:    gj.append(i)for i in book2[0]["高校"]:    if gx.count(i) == 0:        gx.append(i)for i in book2[1]["国家"]:    if gj.count(i) == 0:        gj.append(i)for i in book2[2]["论坛"]:    lt.append(i)newbook3 = [{    "高校": gx}, {    "国家": gj}, {    "论坛": lt}]

动态遍历

上面的代码适用于列表结构稳定的情况。如果列表结构不稳定,需要动态遍历键名:

newOBJ = {}newBook = []def appendList(aList):    for i in range(len(aList)):        for k, v in aList[i].items():            if k in newOBJ:                CList = newOBJ[k]            else:                newOBJ[k] = []                CList = newOBJ[k]            for z in v:                if CList.count(z) == 0:                    CList.append(z)appendList(book1)appendList(book2)for k, v in newOBJ.items():    newBook.append({k: v})

以上就是如何高效合并两个包含键值对列表,并去除重复元素?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1356896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 20:14:02
下一篇 2025年12月13日 20:14:12

相关推荐

发表回复

登录后才能评论
关注微信