合并列表中的数据
如何合并列表以获得所需的效果?考虑以下两个列表:
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
微信扫一扫
支付宝扫一扫