python - 如果存在重复值,则合并所有子列表,同时删除所有重复项
问题描述
假设我有一个列表列表:
lists = [
[1, 2, 5, 7],
[3, 6, 8, 10],
[2, 7, 9, 11]
]
如果它们具有相交值,我想合并它们(从最低到最大索引),而不是复制重复项,以便输出如下所示:
new_lists = [
[1, 2, 5, 7, 9, 11],
[3, 6, 8, 10],
]
我如何在相对高效的同时管理大量列表?
解决方案
所以这是一个类似于我上面评论的 Python 2.7 方法:
lists = [
[1, 2, 5, 7, 13],
[3, 6, 8, 10, 13],
[2, 7, 9, 11]
]
thedict = {}
for sublist in lists:
for el in sublist:
thedict[el] = 1
keylist = thedict.keys()
# at this point, you have one merged list:
print str(keylist)
# You might want to sort it, as key order is not assured
keylist.sort()
# if you want smaller lists, then you can do something like this:
listsize = 5
outlistoflists = []
for i in range(0, len(keylist), listsize):
sublist = keylist[i:i + listsize]
outlistoflists.append(sublist)
print str(outlistoflists)
推荐阅读
- git - 从托管的 git 服务(Github、Bitbucket)中删除密钥而不丢失历史记录
- c++ - 我的函数以字符串类型给出当前日期有什么问题
- flash - 无法运行 SWF 文件。请卡在“右键单击以运行 adobe flash player”
- vuejs2 - 如何从子组件中的过滤器中过滤父组件中的数组
- c# - 将 BigInteger Decimal 转换为 Binary,所有前导零
- php - 当我使用我的 php post 功能时,它会在我无法控制的情况下删除我的会话 cookie
- python - 静态文件不会显示在通过 nginx 提供的实时 django 站点上
- php - 从 wordpress 编辑器将内容作为简码或其他方式插入 php 页面模板
- swift - 如何将类作为函数参数传递?
- vue.js - 在此示例中,如何将样式绑定到我的 v-for 循环?