Python:检查“Dictionary”是否为空似乎不起作用

我试图检查一个字典是否为空,但它不正常。 它只是跳过它,并显示在线没有任何东西,除了显示消息。 任何想法为什么?

def isEmpty(self, dictionary): for element in dictionary: if element: return True return False def onMessage(self, socket, message): if self.isEmpty(self.users) == False: socket.send("Nobody is online, please use REGISTER command" \ " in order to register into the server") else: socket.send("ONLINE " + ' ' .join(self.users.keys())) 

空字典在Python中评估为False

 >>> dct = {} >>> bool(dct) False >>> not dct True >>> 

因此,你的isEmpty函数是不必要的。 所有你需要做的是:

 def onMessage(self, socket, message): if not self.users: socket.send("Nobody is online, please use REGISTER command" \ " in order to register into the server") else: socket.send("ONLINE " + ' ' .join(self.users.keys())) 

这里有三种方法可以检查字典是否为空。 我只喜欢用第一种方式。 另外两种方式太罗嗦了。

 test_dict = {} if not test_dict: print "Dict is Empty" if not bool(test_dict): print "Dict is Empty" if len(test_dict) == 0: print "Dict is Empty" 
 dict = {} print(len(dict.keys())) if length is zero means that dict is empty 

你也可以使用get()。 起初我相信它只是检查钥匙是否存在。

 >>> d = { 'a':1, 'b':2, 'c':{}} >>> bool(d.get('c')) False >>> d['c']['e']=1 >>> bool(d.get('c')) True 

我喜欢得到的是,它不会触发exception,所以它可以很容易地遍历大型结构。

为什么不使用平等testing?

 `{} == {}` 

使用“任何”

dict = {}

如果有的话(字典):

  # true # dictionary is not empty 

其他:

  # false # dictionary is empty