加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 检查所有值是否作为字典中的键存在

发布时间:2020-12-16 22:26:54 所属栏目:Python 来源:网络整理
导读:我有一个值列表和一个字典.我想确保列表中的每个值都作为字典中的键存在.目前我正在使用两套来确定字典中是否存在任何值 unmapped = set(foo) - set(bar.keys()) 有没有更多的pythonic方式来测试这个?感觉有点像黑客? 最佳答案 您的方法将起作用,但是,从转

我有一个值列表和一个字典.我想确保列表中的每个值都作为字典中的键存在.目前我正在使用两套来确定字典中是否存在任何值

unmapped = set(foo) - set(bar.keys())

有没有更多的pythonic方式来测试这个?感觉有点像黑客?

最佳答案
您的方法将起作用,但是,从转换到设置会有开销.

具有相同时间复杂度的另一种解决方案是:

all(i in bar for i in foo)

这两个都有时间复杂度O(len(foo))

bar = {str(i): i for i in range(100000)}
foo = [str(i) for i in range(1,10000,2)]

%timeit all(i in bar for i in foo)
462 μs ± 14.8 μs per loop (mean ± std. dev. of 7 runs,1000 loops each)

%timeit set(foo) - set(bar)
14.6 ms ± 174 μs per loop (mean ± std. dev. of 7 runs,100 loops each)

# The overhead is all the difference here:

foo = set(foo)
bar = set(bar)

%timeit foo - bar
213 μs ± 1.48 μs per loop (mean ± std. dev. of 7 runs,1000 loops each)

这里的开销有很大的不同,所以我会在这里选择所有.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读