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

有没有更好的方法来一次搜索所有 vals 而不是这个 for 循环?


喜欢 some_task = fetch_all_conds(vals)


不确定,我的问题是否有意义?


青春有我
浏览 150回答 1
1回答

慕娘9325324

首先,你的函数没有意义: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)]与 dict 键和 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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python