簡體   English   中英

如何根據列表元素是否包含 Python 中另一個列表中的 substring 來過濾掉列表元素

[英]How to filter out list elements based on if they contain a substring from another list in Python

我有一個字符串列表,例如所謂的“main_list”:

['Hello_Kitty [data]', 'abc_xyz [data]']

和另一個名為“ids”的列表

[abc, xyz]

如果在行條目 (contents_list) 中找到“數據”只是一個字符串列表,我通過查看“contents_list”並附加到 main_list 來創建此列表。

for entry in contents_list:
    if 'data' in entry:
        main_list.append(entry)

如果它包含來自 substring 中的“ids”的 id,我如何過濾掉不是 append 的任何內容到 main_list 的條目?

我想結束這個:

['Hello_Kitty [data]']
main_list = ['Hello_Kitty [data]', 'abc_xyz [data]']
ids = ['abc', 'xyz']

filtered_output=[]

for item in main_list:
    blocked=False
    for id in ids:
        if id in item:
            blocked=True
    if blocked == False:
        filtered_output.append(item)

Output:

['Hello_Kitty [data]']

在追加之前,您需要檢查每個 id 是否在字符串中。 我首選的方法是使用列表推導。

我將使用列表推導創建一個包含字符串包含的所有 id 的列表。 如果此列表的長度大於 0,則不附加該字符串。

[id for id in ids if id in entry]將是列表理解。 對於 id 的每個元素,這將檢查該元素是否是條目的 substring。 如果是,則該 id 進入列表理解。

我將使用條件len( [id for id in ids if id in entry] ) == 0和另一個 if 來完成工作。 如果長度為 0,則沒有 id 是 substring 的條目。

for entry in contents_list:
    if 'data' in entry:
        if len( [id for id in ids if id in entry] ) == 0:
            main_list.append(entry)

暫無
暫無

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

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