python - 从列表中删除重复项并从 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
解决方案
您可以做的一件事是将拉链放在一起,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
推荐阅读
- go - golang 将文件发布到烧瓶服务器
- angular - 使用 --configuration 运行 ionic serve 时,Ionic live reload 无法正常工作
- excel - UDF 函数不显示结果
- python - 新任务的 RoBERTa 微调中的 from_logits=True 与 from_logits=False
- javascript - 在 beforeSession 挂钩中向 edgeOptions 添加功能时出现 WebdriverIO 错误
- amazon-web-services - 有条件地执行嵌套块 restore_to_point_in_time
- python - Python3:条件 if else 并使用解析 json 计算数据
- php - 尝试通过替换 2 个占位符 php 来包含电子邮件模板
- amp-html - AMP 的可滚动水平标签
- javascript - JavaScript 没有“取消点击”按钮及其影响 Flask