python - 比较python中的列表值
问题描述
我有一个定义为 list1 的列表,la
其中我有一些值,而 list2lb
也有一些值,现在我想匹配两个列表中的值,如果 list2 包含 list1 中的任何匹配项,则创建一个匹配的列表并连同这个另一个列表,我将根据条件映射另一个列表gh
或mn
值,一旦完成,它应该创建一个最终列表,其中只有 list1 中的值。到目前为止我所尝试的并没有提供所需的输出。
lb=[1,2,3,4,5,6]
la = [1,2,3,4,8]
cd=[]
ef=[]
gh=[]
ij=[]
mn=[]
for keya in la: #main list
ef.append('0') #main val
if (x in la for x in lb):
cd=(la and lb)
gh.append('1')
d1 = [{'Tpj_id': a, 'status': t} for a, t in zip(cd, gh)]
d2 = [{'Tpj_id': s, 'status': j} for s, j in zip(la, ef)]
if len(cd) == 0:
#print(d2)
d4=d2
print(d4)
else:
ij=[elem for elem in la if elem not in lb]
for keyg in ij:
mn.append('0')
d3 = [{'Tpj_id': o, 'status': p} for o, p in zip(ij, mn)]
d4 = d3 + d1
print(d4)
电流输出:
[{"Tpj_id": 1, "status": "1"}, {"Tpj_id": 2, "status": "1"}, {"Tpj_id": 3, "status": "1"}, {"Tpj_id": 4, "status": "1"}, {"Tpj_id": 5, "status": "1"}, {"Tpj_id": 6, "status": "1"}, {"Tpj_id": 8, "status": "0"}]
所需的输出:
[{"Tpj_id": 1, "status": "1"}, {"Tpj_id": 2, "status": "1"}, {"Tpj_id": 3, "status": "1"}, {"Tpj_id": 4, "status": "1"}, {"Tpj_id": 8, "status": "0"}]
解决方案
你可以试试这个
lb=[1,2,3,4,5,6]
la = [1,2,3,4,8]
non_comn_list = [item for item in la if item not in lb]
com_list = [item for item in la if item not in non_comn_list]
list = [{'Tpj_id': a, 'status': 1} for a in com_list]
[list.append(val) for val in [{'Tpj_id': a, 'status': 0} for a in non_comn_list]]
list
输出
[{'Tpj_id': 1, 'status': 1},
{'Tpj_id': 2, 'status': 1},
{'Tpj_id': 3, 'status': 1},
{'Tpj_id': 4, 'status': 1},
{'Tpj_id': 8, 'status': 0}]
推荐阅读
- reactjs - React - 不变违规:超过最大更新深度
- asp.net-mvc - How to return select option value?
- python-3.x - Tailer 跟踪更改的文件
- mysql - 为什么 mysql 访问在 git bash 上不起作用?
- azure - 我正在尝试在 azure cli 中创建文件共享,但它给了我错误
- next.js - 什么构成/决定了 Zeit 无服务器功能的数量
- javascript - 在哪里在线上传 javascript 文件以及如何正确获取它?
- highcharts - Highcharts 组织结构图 - 节点显示不正确
- c# - 在 Azure DevOps 上显示 NUnit 测试代码覆盖率
- azure - 长期运行的 Azure SQL 数据库维护