python - 元组列表按第一个索引删除重复项
问题描述
我很难对付这个。我有一个元组列表,但只对基于元组的第一项删除重复项感兴趣。
我需要通过仅查看元组中的第一项来从单个列表中删除重复项。
我需要比较唯一在 uniqueFound 中的重复项的列表,并且只保留那些不在 uniqueFound 中的唯一项,也只对元组的第一项感兴趣。不应考虑其他数字和值。这是我想出的,它仍然在不应该的时候将 N1 传递到最终列表。必须有一个更简单的方法来做到这一点?
#unique found
uniqueFound = [('N1', '20.3', 1, 58, 14),
('N2', '20.1', 1, 44, 14),
('N3', '21', 1, 23, 14),
('N1', '21', 1, 23, 14),
('N5', '33', 1, 34, 14)
]
unique = [('N0', '23', 2, 22, 1),
('N6', '33.1', 1, 25, 11),
('N3', '21', 1, 33, 12),
('N1', '44', 1, 2, 44),
('N7', '33.2', 4, 22, 12),
('N7', '3.2', 2, 21, 132)
]
#Remove duplicates
uniqueFound = dict((x[0], x) for x in uniqueFound).values()
unique = dict((x[0], x) for x in unique).values()
fmatches=[]
uniquefinal = []
for x in uniqueFound:
for y in unique:
if x[0] == y[0]:
fmatches.append(y)
else:
continue
fmatches = dict((x[0], x) for x in fmatches).values()
for x in unique:
for y in fmatches:
if x[0] == y[0]:
continue
else:
uniquefinal.append(x)
duplicatesrem = dict((x[0], x) for x in uniquefinal).values()
uniqueFinal = list(duplicatesrem)
print(uniqueFinal)
产生
[('N0', '23', 2, 22, 1), ('N6', '33.1', 1, 25, 11), ('N3', '21', 1, 33, 12), ('N1', '44', 1, 2, 44), ('N7', '3.2', 2, 21, 132)]
我要做什么(在独特的但不是在独特的发现):
[('N0', '23', 2, 22, 1), ('N6', '33.1', 1, 25, 11), ('N7', '3.2', 2, 21, 132)]
谢谢你的帮助。
解决方案
uniqueFound = [('N1', '20.3', 1, 58, 14),
('N2', '20.1', 1, 44, 14),
('N3', '21', 1, 23, 14),
('N1', '21', 1, 23, 14),
('N5', '33', 1, 34, 14)
]
unique = [('N0', '23', 2, 22, 1),
('N6', '33.1', 1, 25, 11),
('N3', '21', 1, 33, 12),
('N1', '44', 1, 2, 44),
('N7', '33.2', 4, 22, 12),
('N7', '3.2', 2, 23, 1)
]
aux1 = set(e[0] for e in uniqueFound)
aux2 = set()
result = []
for e in unique:
e0 = e[0]
if e0 in aux1: continue
if e0 in aux2: continue
aux2.add(e0)
result.append(e)
print(result)
aux1
是一个包含来自 的“键”的辅助集uniqueFound
。
aux2
是一个包含已使用“键”的辅助集
如果在or中找到“键” ( e0
) ,则不执行任何操作。否则将“键”添加到结果中并将元素添加到结果中aux1
aux2
aux2
推荐阅读
- javascript - 尝试在 Node.js 上使用 Sequelize 并遇到创建问题
- list - 使用 Groovy 获得更好的随机值
- couchdb - 如何安装 couchdb 2.3.0 版
- angular - 无法将更新的信息从提供商传递到页面
- c# - 如何动态构建 Func<>?
- mysql - 优化 MySQL CREATE TABLE 查询
- python - 有没有一种简单的方法可以以树的形式打印一个类的层次结构?
- oracle - 在行触发器中取消插入值
- mule - Mule 4:如果使用属性,则 Cloudhub 部署失败
- javascript - 未捕获的类型错误:item.getData 不是函数