字典中键的Pythonic简写?

5 投票
3 回答
2334 浏览
提问于 2025-04-16 23:33

简单的问题:有没有一种简便的方法可以检查字典中是否存在多个键?

'foo' in dct and 'bar' in dct and 'baz' in dct

3 个回答

5
{"foo","bar","baz"}.issubset(dct.keys())

对于 Python 版本低于 2.7 的情况,你需要把集合的写法换成 set(["foo","bar","baz"]) 这种形式。

如果你喜欢用运算符,并且不介意再创建一个集合的性能开销,你可以在集合和字典的键集合上使用 <= 运算符。

这两种写法结合起来会像这样:

set(["foo","bar","baz"]) <= set(dct)

最后,如果你使用的是 Python 3,dict.keys() 会返回一个类似集合的对象,这样你就可以直接使用运算符而不会影响性能,像这样:

{"foo","bar","baz"} <= dct.keys()
8

这段内容是关于编程问题的讨论,主要是在解决某个特定的技术难题。虽然具体的问题没有详细说明,但可以想象这是一个程序员在寻求帮助的场景。他们可能遇到了代码运行不正常或者想要实现某个功能却不知道怎么做的情况。

在这样的讨论中,其他程序员会分享他们的经验和解决方案,可能会提供一些代码示例,帮助提问者理解如何解决问题。大家会用简单的语言来解释复杂的概念,确保即使是初学者也能明白。

总之,这个内容的核心就是程序员之间互相帮助,共同解决编程中的难题,让每个人都能更好地学习和进步。

all(x in dct for x in ('foo','bar','baz'))
7

你可以使用 all() 结合 生成器表达式 来进行操作:

>>> all(x in dct for x in ('foo', 'bar', 'qux'))
False
>>> all(x in dct for x in ('foo', 'bar', 'baz'))
True
>>> 

这样做可以节省你整整两个字符(如果你要检查的列表更长,那就能节省更多字符)。

撰写回答