values keys item dictionaries create python dictionary

keys - Python: Comprobar si un ''Diccionario'' está vacío no parece funcionar



python dictionary of dictionaries (7)

Estoy tratando de verificar si un diccionario está vacío pero no se comporta correctamente. Simplemente lo omite y muestra EN LÍNEA sin nada más que mostrar el mensaje. ¿Alguna idea de por qué?

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


¿Por qué no usar la prueba de igualdad?

`{} == {}`


Aquí hay tres formas en que puede verificar si el dict está vacío. Aunque prefiero usar la primera manera solamente. Las otras dos formas son demasiado largas.

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"


Los diccionarios vacíos evalúan False en Python:

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

Por lo tanto, su función isEmpty es innecesaria. Todo lo que necesitas hacer es:

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


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")


También puedes usar get (). Inicialmente lo creía solo para comprobar si existía la clave.

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

Lo que me gusta de get es que no activa una excepción, por lo que hace que sea fácil atravesar estructuras grandes.


usar cualquier''

dict = {} if any(dict) : # true # dictionary is not empty else : # false # dictionary is empty


dict = {} print(len(dict.keys()))

si la longitud es cero significa que el dict está vacío