gpt4 book ai didi

python - 在 filter() 中使用 has_key() 的最快方法?

转载 作者:行者123 更新时间:2023-11-28 19:52:30 25 4
gpt4 key购买 nike

我知道这在 python 2 中是一种非常有效的方式,可以与 2 个字典相交

filter(dict_1.has_key, dict_2.keys())

然而 has_key() 已从 Python3 中删除,所以我不能真正使用快速的 filter()has_key() 函数.我现在正在做的是:

[key for key in dict_2 if key in dict_1]

但除了可读性不佳之外,它似乎有点简陋。这真的是 python3 最快的新方法,还是使用 filter() 有更快、更干净的方法?

最佳答案

您可以在 Python 3.x 中使用 in 运算符,而不是 Python 2 中的 has_key。使用 filter,它在 3.x 中提供了一个惰性迭代器,您可以使用 dict.__contains__。也无需调用 dict.keys:

res = filter(dict_1.__contains__, dict_2)    # lazy

print(list(res))
# [2, 3]

基于 lambda 的等效但不太美观的解决方案:

res = filter(lambda x: x in dict_1, dict_2)  # lazy

生成器表达式是第三种选择:

res = (x for x in dict_2 if ix in dict_1)    # lazy

对于非惰性方法,您可以使用set.intersection(或其语法糖&):

res = set(dict_1) & set(dict_2)              # {2, 3}

关于python - 在 filter() 中使用 has_key() 的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54089088/

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