假设我有一本字典,并且想检查某个键是否映射到非空值。len函数是实现此目的的一种方法:
mydict = {"key" : "value", "emptykey" : ""}
print "True" if len(mydict["key"]) > 0 else "False" # prints true
print "True" if len(mydict["emptykey"]) > 0 else "False" # prints false
但是,人们可以依赖于Python的语义,以及如果定义了一个对象,该对象如何评估为true并忽略len调用:
mydict = {"key" : "value", "emptykey" : ""}
print "True" if mydict["key"] else "False" # prints true
print "True" if mydict["emptykey"] else "False" # prints false
但是,我不确定哪个更适合Pythonic。第一种感觉“显性胜于隐性”,但是第二种感觉“简单胜于复杂”。
我还想知道是否省去了len调用,因为我正在使用的字典不一定包含字符串,而是可能包含其他len-
able类型(列表,集合等)。OTOH,在前一种情况下(使用len调用),如果将None值存储为值,则代码将爆炸,而非len版本将按预期工作(将其评估为false)。
哪个版本更安全,更Pythonic?
编辑:澄清假设:我 知道 键在字典中,并且我知道值将是可接受的。我也无法避免让零长度值输入字典。
编辑#2:看来人们似乎错过了我的问题的重点。我不是要确定检查字典中是否存在键的最Pythonic /最安全的方法,而是要检查
一个值的长度是否为零
如果您知道密钥在字典中,请使用
if mydict["key"]:
...
它很简单,易于阅读,并说:“如果与’键’相关的值求值,那就True
做点什么”。要知道,重要的珍闻是,容器类型(字典,列表,元组,STR等)只能评估到True
,如果他们len
是大于0。
KeyError
如果mydict
违反了您输入密钥的前提,也会引发。
所有这些使它成为Pythonic。
问题内容: 我想在更新密钥值之前测试字典中是否存在密钥。我写了以下代码: 我认为这不是完成此任务的最佳方法。有没有更好的方法来测试字典中的键? 问题答案: 是测试密钥是否存在的预期方法。 如果你想使用默认值,可以随时使用dict.get(): 如果你想始终确保任何键的默认值,则可以重复使用,也可以从模块中使用它,如下所示: 但总的来说,关键字是最好的方法。
问题内容: 我有一个,并且想知道最快的方法是检查所有值是否均为零? 有没有比做更快的方法: 问题答案: 我先将所有字节加总后就重写了这个答案,但是这是不正确的,因为Java已经对字节进行了签名,因此我需要or。 另外,我已将JVM预热更改为正确。 最好的选择实际上是简单地遍历所有值。 我想您有三种主要选择: 或所有元素并检查总和。 进行无分支比较。 与分支进行比较。 我不知道使用Java添加字节的
问题内容: 我有一个Python字典列表,如下所示: 我想检查列表中是否已存在具有特定键/值的字典,如下所示: 问题答案: 这是一种实现方法: 括号中的部分是一个生成器表达式,该表达式将为每个具有要查找的键值对的字典返回,否则为。 如果密钥也可能丢失,则上面的代码可以给您一个。您可以通过使用并提供默认值来解决此问题。如果不提供 默认 值,则返回。
问题内容: 我想检查所有值(即对应于字典中所有键的值)是否为0。是否有没有循环的方法?如果可以,怎么办? 问题答案: 用途: 如果给定的iterable的所有元素都为true,则返回。
问题内容: 给定字典,我如何找出该字典中的给定键是否已设置为非值? 即,我想这样做: 即,如果要在其中增加一个值,我想增加该值,否则将其设置为1。 问题答案: 您正在寻找(适用于Python 2.5+)。这个 会做你想要的。 对于常规Python来说,如果给定键没有值,则访问dict时 不会 获得结果-将引发a。因此,如果您想使用Regular而不是代码,则可以使用
如何检查字典是否为空?更具体地说,我的程序从字典中的某个键开始,我有一个循环,循环迭代直到字典中有键为止。整体上algo是这样的: 从Dict中的某个键开始 当Dict中有键时 对Dict中的第一个键执行某些操作 删除第一个键 请注意,上面循环中的可能会向字典中添加新键。我尝试了中的值 但在while循环中添加了一些新键,因此它会失败。
问题内容: 这个问题与Python类似-在字典中查找最长(最多单词)键-但我需要纯字符数。 输入示例: 输出: 问题答案: 替代方法,与@jamylak的解决方案一样快,并且使用更多的pythonic: 查看比较:
问题内容: 您如何检查变量是否是python中的字典? 例如,我希望它遍历字典中的值,直到找到字典为止。然后,遍历找到的内容: 问题答案: 如果使用子类,则可以使用或可以使用的方法: