我有一本字典,对于每个键,我都有一个元组列表。列表的长度各不相同,但每个元组都有 4 个条目。这是一键的示例
genes = {'Tcea1': [
('995', '057', '551', '613'),
('825', '912', '541', '683'),
('541', '683', '821', '877'),
('825', '912', '538', '683'),
('538', '683', '821', '877'),
('489', '584', '551', '613')]}
我想做的是删除重复项。但我唯一关心的部分是索引位置 1 和 2。所以在上面的例子中我想要 ('541', '683', '821', '877') 和 ('538', '683', ' 821', '877') 已删除,因为索引 1 对于两者都是 683,而索引 2 对于两者都是 821。所以理想的输出是
genes = {'Tcea1': [
('995', '057', '551', '613'),
('825', '912', '541', '683'),
('825', '912', '538', '683'),
('489', '584', '551', '613')]}
这让我很难过。下面是我能得到的最接近的。以下代码将仅删除其中一个元组,但我希望两者都消失
seen = set()
seen_add = seen.add
genes['Tcea1'] = [x for x in genes['Tcea1'] if tuple(x[1:3]) not in seen and not seen_add(tuple(x[1:3]))]
编辑:我需要保持秩序