J'essaie de vérifier si un dictionnaire est vide mais il ne se comporte pas correctement. Il le saute et afficheONLINEsans rien d'autre que d'afficher le message. Des idées pourquoi?
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()))
Dictionnaires vides évaluer à False
en Python:
>>> dct = {}
>>> bool(dct)
False
>>> not dct
True
>>>
Ainsi, votre fonction isEmpty
est inutile. Tout ce que vous devez faire c'est:
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()))
Voici trois façons de vérifier si dict est vide. Je préfère utiliser le premier moyen que si. Les deux autres moyens sont beaucoup trop verbeux.
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()))
si longueur est égale à zéro, cela signifie que dict est vide
Python 3:
def is_empty(dict):
if not bool(dict):
return True
return False
test_dict = {}
if is_empty(test_dict):
print("1")
test_dict = {"a":123}
if not is_empty(test_dict):
print("1")
Voici des moyens simples de vérifier un dict vide:
a= {}
1. if a == {}:
print ('empty dict')
2. if not a:
print ('empty dict')
Bien que la méthode 1st soit plus stricte que lorsque a = None, la méthode 1 fournira un résultat correct, mais la méthode 2 donnera un résultat incorrect.