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