簡體   English   中英

比較python中的列表值

[英]comparing list values in python

我有一個定義為 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"}]

你可以試試這個

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}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM