首页 > 解决方案 > 从列表中删除重复项并从 python 中的第二个列表中删除相应的元素

问题描述

我有两个清单。一个包含表示名称的字符串,一个包含表示人员的整数。每个名字都有一个相应的数字,我可以访问每个名字,因为它们在同一个索引上。但是,有很多重名,我想删除所有重名。我想过使用一个集合来删除重复项,然后将其转换回这样的列表:

names = (list(set(names)))

但是现在,我怎样才能保留与集合中保留的元素各自相同的电话号码。

一个例子。

前:

Index    Name        Number
0        Alexander   12345
1        Elena       45678
2        John        76542
3        Alexander   43256
4        John        45024
5        David       69438   

后:

NewIndex Name        Number
0        Alexander   12345
1        Elena       45678
2        John        76542
3        David       69438   

标签: pythonlistduplicates

解决方案


您可以做的一件事是将拉链放在一起,Name然后Number制作一个字典。由于 dict基于键的值进行散列,因此该值仍然与名称相关联,但在其他方面保持不变:

name_dict = dict(zip(names, numbers))
new_names, new_numbers = zip(*list(name_dict.items()))

现在,new_names仍然按索引对应new_numbers,但应该没有剩余的重复元素。


这种方法的一个警告是,给定名称的最后一次出现是其编号优先的名称(例如"Alexander",对应于43256,而不是12345)。您应该能够通过切换读取和分配键dict(reversed(zip(names, numbers)))的顺序来解决此问题。dict


推荐阅读