[英]Creating Dictionary and Integer Key for List of Strings in 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']
您還可以使用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.