gpt4 book ai didi

python - python中字典的多键值查找

转载 作者:太空狗 更新时间:2023-10-29 21:48:11 26 4
gpt4 key购买 nike

所以很多时候我使用字典进行键/值查找。但是如果我需要查找多个东西,我通常会有一个 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)]

有没有比这个 for 循环更好的一次性搜索所有 val 的方法?

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)] 与 dict 键和 vals 之间的交集相同,因此您的理解可以修改为:

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

关于python - python中字典的多键值查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53531928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com