python - Python 检查两个列表中的重复值和空值并映射它们
问题描述
我有两个名称和数字列表,其中包含一些空白和重复的条目
phone = ['918222822','92929129','','92929129','','12345678','12345678','1727398','']
name = ['jhon', 'ele', '' , 'ele', '' , 'rock','rock','','burh']
- 如果您看到大多数数字映射到一个名称。
- 有一种情况,我输入了姓名空白的数字,反之亦然。
这是迄今为止尝试过的:
phone = ['918222822','92929129','','92929129','','12345678','12345678','1727398','']
name = ['jhon', 'ele', '' , 'ele', '' , 'rock','rock','','burh']
phone = set(phone)
name = set(name)
for na, ph in zip(name,phone):
if na is None:
na = ph
elif ph is None:
#do something
pass
print(na,ph)
我想要得到的输出是:
输出
jhon 918222822
ele 92929129
rock 12345678
1727398 1727398 # if number found but not name then put number in name
# if only name found but no corresponding number then delete entries in both list
解决方案
phone = ['918222822','92929129','','92929129','','12345678','12345678','1727398','']
name = ['jhon', 'ele', '' , 'ele', '' , 'rock','rock','','burh']
res = set([i for i in zip(phone, name) if i[0]])
res = dict((i[0], i[1]) if i[1] else (i[0], i[0]) for i in res)
print(res.keys()) #phone
print(res.values()) #name
输出:
['1727398', '918222822', '12345678', '92929129']
['1727398', 'jhon', 'rock', 'ele']
推荐阅读
- python - 为pyspark中的唯一行生成序列列
- sql - 访问查询以将评论字段拆分为多条记录
- angular - 如何限制 Angular 输入框中的输入并保持模型正确?
- php - 根据检查元素的结果拆分数组
- javascript - 查看在 JavaScript 中设置规则
- sql - 如何使用 powershell sql 检查错误
- javascript - Bootstrap 4 动态 WordPress 轮播不会滑动
- java - java.lang.InstantiationException 尽管存在 NoArgsConstructor
- certificate - 证书说在 Firefox 上被撤销,但在 ssl 证书验证网站上没有
- javascript - 计算具有球员评分的两支相等的球队