web-dev-qa-db-fra.com

Python: vérifier si un dictionnaire est vide ne semble pas fonctionner

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())) 
253
Unsparing

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()))
504
iCodez

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"
86
doubleo
dict = {}
print(len(dict.keys()))

si longueur est égale à zéro, cela signifie que dict est vide

9

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")
0
Luís De Marchi

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.

0
Shagun Pruthi