比较python中的列表值

Posted

技术标签:

【中文标题】比较python中的列表值【英文标题】:comparing list values in python 【发布时间】:2020-02-05 04:20:13 【问题描述】:

我有一个定义为 list1 la 的列表,其中我有一些值,而 list2 lb 也有一些值,现在我想匹配两个列表中的值,如果 list2 包含 list1 中的任何匹配项然后创建一个匹配的列表以及另一个列表,我将根据条件映射另一个列表ghmn 值,一旦完成,它应该创建一个最终列表,其中只有 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"]

【问题讨论】:

您能解释一下您要执行的操作吗?我很难理解你写的描述。 @AMC 所以我有两个包含一些值的列表,我正在比较它们,现在如果在 list1 中有来自 list2 的值,则将值存储在匹配的单独列表中,然后附加状态 1给他们。 @AMC 基本上我想要实现的是,如果在列表la 中有匹配的元素在列表lb 中,那么无论匹配的元素是什么,我们应该有状态 1 休息 0 为什么使用 1/0 而不是布尔值? @AMC 因为对这些数据的进一步评估对布尔值没有任何用处,但对数字数据类型没有任何用处:-) 【参考方案1】:

你可以试试这个

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]

【讨论】:

我得到这样的 o/P ['Tpj_id': 1, 'status': 1, 'Tpj_id': 2, 'status': 1, 'Tpj_id': 3, 'status': 1, 'Tpj_id': 4, 'status': 1, 'Tpj_id': 8, 'status': 1, []] 我不希望在 list 数据中出现额外的空列表

以上是关于比较python中的列表值的主要内容,如果未能解决你的问题,请参考以下文章

如何将嵌套字典列表与它们的值中的公共键相加? [复制]

从列表中的每个值中选择前 10 个元素

从下拉列表 Select2 中的多个值中获取选定值

列表中的字符串与列表的先前值中的字符串不同时的运行功能

python3返回值中的none

检查多个列在表值参数中具有多个值中的任何一个