簡體   English   中英

Python:使用字符串列表過濾字典鍵

[英]Python: Filter a dictionary key using list of strings

我有一個字典,其中包含一個帶有字符串值列表的鍵。

d = {'docs':['1_a', '2_a', '3_b', '4_c', '4_d']}

我想用['a', '4']類的過濾器列表過濾d['docs'] ] ,這樣我得到:

['1_a', '2_a', '4_c', '4_d']

過濾器列表可以有許多關鍵字,而不僅僅是兩個。 我已經查看了列表理解並失敗了。

只需搜索是否any搜索詞出現在您的值中:

d = {'docs':['1_a', '2_a', '3_b', '4_c', '4_d']}
search = ['a', '4']
out = [val for val in d['docs'] if any(s in val for s in search)]

print(out)
# ['1_a', '2_a', '4_c', '4_d']

這里是 go:

>>> d = {'docs':['1_a', '2_a', '3_b', '4_c', '4_d']}
>>> search = ['a', '4']
>>> [x for x in d['docs'] if any(s in x for s in search)]
['1_a', '2_a', '4_c', '4_d']

我想出了一個解決方案,不確定它是否是您正在尋找的。

d = {'docs':['1_a', '2_a', '3_b', '4_c', '4_d']}
filter = ['a', '4']
result = []

for i in (d['docs']):
    
    for f in filter:
        if f in i:
            result.append(i)

print(result)

在此處輸入圖像描述

您還可以使用filter()從列表中過濾元素:

list(filter(lambda x: any(i in x for i in ['a', '4']), d['docs']))
['1_a', '2_a', '4_c', '4_d']

看起來 OP 得到了他們想要的東西,但這主要是打字,所以我不妨張貼。 如果這個想法是與蛞蝓一起工作,那么接受的答案可能會導致奇怪的結果。

例如:

>>> d = {'docs': ['2_at', '2_hat', '34_b', '4_c', '32_bat']}
>>> search = ['at', '4']
>>> [val for val in d['docs'] if any(s in val for s in search)]
['2_at', '2_hat', '34_b', '4_c', '32_bat']

相反,您可以拆分每個項目:

>>> d = {'docs': ['2_at', '2_hat', '34_b', '4_c', '32_bat']}
>>> search = ['at', '4']
>>> [val for val in d['docs'] if any(s in val.split('_') for s in search)]
['2_at', '4_c']

暫無
暫無

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

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