python - 根据原始列表之一中的重复项,将列表列表拆分为两个列表列表
问题描述
我有两个列表列表
queryBounds = [[2, 1924], [2, 1924], [2187, 2233], [2187, 2233]]
sequenceBounds = [[95516, 97442], [139777, 137851], [97433, 97479], [137860, 137814]]
我想queryBounds
分成两个列表queryBoundsA
,queryBoundsB
这样两个列表中都没有重复项,即
queryBoundsA = [[2, 1924], [2187, 2233]]
queryBoundsB = [[2, 1924], [2187, 2233]]
然后,我想拆分sequenceBounds
为两个列表sequenceBoundsA
,sequenceBoundsB
以便其中sequenceBounds
具有与项目相同索引的项目queryBounds
移动到queryBoundsA
orqueryBoundsB
中,并且它们的列表索引与具有相同索引的项目的位置相匹配sequenceBounds
。
sequenceBoundsA = [[95516, 97442], [97433, 97479]]
sequenceBoundsB = [[139777, 137851], [137860, 137814]]
queryBounds
当仅包含重复项时,我还需要此功能:
queryBounds = [[2, 2233], [2, 2233]]
sequenceBounds = [[111722, 113939], [166447, 164230]]
queryBoundsA = [[2, 2233]]
queryBoundsB = [[2, 2233]]
sequenceBoundsA = [[111722, 113939]]
sequenceBoundsB = [[166447, 164230]]
我不知道该怎么做
解决方案
让字典来完成这项艰巨的工作。这将处理超过 2 个副本:
queryBounds = [[2, 1924], [2, 1924], [2187, 2233], [2187, 2233]]
sequenceBounds = [[95516, 97442], [139777, 137851], [97433, 97479], [137860, 137814]]
# Create a dict:
sorter = {}
for q, s in zip(queryBounds,sequenceBounds):
q = tuple(q)
if q not in sorter:
sorter[q] = [s]
else:
sorter[q].append( s )
# Print the results:
qb = [[]]
sb = [[]]
for k, v in sorter.items():
for i,v1 in enumerate(v):
if i >= len(qb):
qb.append( [] )
sb.append( [] )
qb[i].append( list(k) )
sb[i].append( v1 )
print( qb )
print( sb )
输出:
[[[2, 1924], [2187, 2233]], [[2, 1924], [2187, 2233]]]
[[[95516, 97442], [97433, 97479]], [[139777, 137851], [137860, 137814]]]
推荐阅读
- dart - 具有水平和垂直中心对齐分隔线的 GridView
- openid - 使用 openID 对网站中的敏感内容进行重新验证流程
- python - 如何在 Google Colab 笔记本的“.py”文件中运行 Python 脚本?
- angular - 将选中的复选框绑定为布尔值
- java - JavaFX 动画/视图 3d 与窗格
- c# - 使用 ADO.Net 将多对多关系转换为单个类
- python - 在 Ubuntu 上使用 Apache 部署的 Django 失去了所有样式
- facebook - Facebook - 涉及“manage_pages”的页面访问令牌创建方法现在要求提供隐私政策和其他应用程序详细信息
- sql - 需要做一个有条件的 LIKE 请求
- java - 您可以在多个线程上(同时)运行一种主要方法吗?