python - 两个列表之间的Python多重条件
问题描述
我正在使用 python 3,我需要检查不同列表中的 3 个变量。username
age
lang
如果与其他列表不同,我想打印数据
这是我的代码:
list1 = []
list2 = []
list1.append({'username' : 'alice', 'age' : 25, 'lang' : 'IT'})
list1.append({'username' : 'carole', 'age' : 40, 'lang' : 'FR'})
list1.append({'username' : 'john', 'age' : 30, 'lang' : 'FR'})
list1.append({'username' : 'mick', 'age' : 20, 'lang' : 'US'})
list1.append({'username' : 'mick', 'age' : 30, 'lang' : 'US'})
list2.append({'username' : 'mick-c', 'age' : 30, 'lang' : 'US'})
list2.append({'username' : 'john', 'age' : 30, 'lang' : 'FR'})
list2.append({'username' : 'john-b', 'age' : 30, 'lang' : 'FR'})
for l1 in list1:
username = l1['username']
age = l1['age']
lang = l1['lang']
for l2 in list2:
if username not in l2['username'] and l2['age'] != age and l2['lang'] != lang:
print(str(username) + ' ' + str(age) + ' ' + str(lang))
输出 :
alice 25 IT
alice 25 IT
alice 25 IT
carole 40 FR
mick 20 US
mick 20 US
我的预期输出是:
alice 25 IT
carole 40 FR
mick 20 US
如何在循环中不包含重复数据?还有另一种方法可以做我想做的事情,而不是使用双循环?
解决方案
仅当在 中找不到记录时才应输出记录,因此在确保所有 3 个字段都通过相等测试(而不是不等式测试)没有条目后list2
,您应该使用for-else
构造:print
list2
for l1 in list1:
username = l1['username']
age = l1['age']
lang = l1['lang']
for l2 in list2:
if username in l2['username'] and l2['age'] == age and l2['lang'] == lang:
break
else:
print(str(username) + ' ' + str(age) + ' ' + str(lang))
这输出:
alice 25 IT
carole 40 FR
mick 20 US
推荐阅读
- cmd - 怎么修 '。' 不被识别为内部或外部命令、可运行程序或批处理文件?
- laravel - ubuntu 中缺少 CORS 标头“Access-Control-Allow-Origin”
- javascript - PHP文件中的自动版本控制内联Javascript?
- vue.js - Vue路由器,全局守卫“beforeEach”循环
- reactjs - 使 props 处于 react-native 状态
- r - R Server:左侧的窗格是互斥的
- google-bigquery - Google BigQuery - 如何使用 google-cloud-bigquery gem 进行更新插入?
- java - Spring/Jhipster QueryService 如何构建深度规范
- java - java Workbook'是抽象的;无法实例化
- sql - 客户 ID 为空,即使有序列