Python中如何正确判断Dict是否为空?

如 debug 的截图

QQ20190221-182258.png

link_and_name 这个是一个 dict,可以看到他目前是空 {} 但是我的代码中

if not link_and_name:
    return item

并不管用,还是没有 return

请问这是怎么回事


抱歉抱歉,我看到了,类型不是 Dict,是我代码逻辑的错误,打扰了


Python中如何正确判断Dict是否为空?

12 回复

看看 stdlib 文档,对这些 collection bool value False 是指 len=0


判断一个字典是否为空,最直接和Pythonic的方法是使用 if not dict_obj: 或者 if len(dict_obj) == 0:

首选方法:if not dict_obj: 这是最推荐的方式,因为它利用了Python的“真值测试”。一个空字典在布尔上下文中被视为 False,非空字典被视为 True。代码简洁、高效且可读性强。

my_dict = {}

# 方法1:使用 `if not`
if not my_dict:
    print("字典是空的")
else:
    print("字典非空")

备选方法:if len(dict_obj) == 0: 这个方法也很清晰,直接检查字典的长度(即键值对的数量)是否为0。虽然不如方法1简洁,但意图非常明确。

my_dict = {}

# 方法2:检查长度
if len(my_dict) == 0:
    print("字典是空的")
else:
    print("字典非空")

需要避免的方法: 不要使用 if dict_obj == {}: 来检查。虽然功能上正确,但它创建了一个新的空字典对象来进行比较,效率较低且不够Pythonic。

总结:用 if not your_dict: 就对了。

楼主看样子是在爬不得了的东西

你的判断方法是正确的, 至于为何不如预期



你 type (link_and_name) 就明白了

点赞啊

RBQ。RBQ。

{str}’{}’, 你所谓的是个字典其实是个字符串’{}’,这个字符串非空,所以 not link_and_name is False
另外 elif os.path.exists(‘info’) is False: 可以直接写成 elif not os.path.exists(‘info’):

判断一个 dict 是否为空,应该用 len(dict.keys())==0,你这样是判断是否为 None,判断是否在 dict 中,是 if key in dict.

刚从别的语言转过来吧

New91Crawler ……(#`O ′)妖妖灵吗,这里有人蛇黄

你那是个字符串,不是字典

不得了, 爬 91

等等 你在爬 91 ?

回到顶部