簡體   English   中英

python中字典的多鍵值查找

[英]Multiple key value lookup for dictionary in python

因此很多時候我使用字典進行鍵/值查找。 但是如果我需要查找多個東西,我通常會有一個for循環。 例如:

def check_cond(key):
    return True if key in some_dict else False

some_task = [val for val in vals if check_cond(val)]

有沒有更好的方法來一次搜索所有的val而不是這個for循環?

some_task = fetch_all_conds(vals)

不確定,如果我的問題有意義嗎?

首先,你的功能毫無意義:

def check_cond(key):
    return True if key in some_dict else False

同樣簡單: key in some_dict

現在: [val for val in vals if check_cond(val)][val for val in vals if check_cond(val)]相同,則與dict鍵和[val for val in vals if check_cond(val)]之間的交集相同,因此您的理解可以修改為:

[val for val in vals if val in some_dict]

如果在vals中沒有重復值,您可以:

 list(set(vals).intersect(some_dict.keys()))

例如:

>>> vals = [1, 2, 3]
>>> d = {1:1, 2:2, 4:4, 5:5}
>>> list(set(vals).intersection(d.keys()))
[1, 2]

您可以使用filter但與理解相同。 我們甚至可以將dict鍵設置為一組以使查找更快:

>>> def check_cond(keys, val):
...     return val in keys
... 
>>> from functools import partial
>>> result = list(filter(partial(check_cond, set(d.keys())), vals))
>>> 
>>> result
[1, 2]

暫無
暫無

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

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