685 Stimmen

Wie überprüft man, ob ein Wörterbuch leer ist?

Ich versuche zu überprüfen, ob ein Wörterbuch leer ist, aber es verhält sich nicht richtig. Es überspringt es einfach und zeigt ONLINE an, ohne etwas anderes neben der Anzeige der Nachricht anzuzeigen. Irgendwelche Ideen warum?

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("Niemand ist online, bitte benutzen Sie den Befehl REGISTER" \
                 " um sich beim Server zu registrieren")
    else:
        socket.send("ONLINE " + ' ' .join(self.users.keys()))

5voto

Arpan Saini Punkte 3235

1. Weg

len(given_dic_obj) 

Es gibt 0 zurück, wenn es keine Elemente gibt. Ansonsten gibt es die Größe des Wörterbuchs zurück.

2. Weg

bool(given_dic_object)

Gibt False zurück, wenn das Wörterbuch leer ist, ansonsten True.

0voto

MortenB Punkte 1787

Sie können auch get() verwenden. Anfangs dachte ich, es würde nur überprüfen, ob der Schlüssel vorhanden ist.

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

Was mir an get gefällt, ist, dass es keine Ausnahme auslöst, daher ist es einfach, sich durch große Strukturen zu bewegen.

-9voto

chhotu sardar Punkte 43

Verwende 'any'

dict = {}

if any(dict) :

     # wahr
     # Dictionary ist nicht leer

else :

     # falsch
     # Dictionary ist leer

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X