辞書が空かどうか確認するにはどうすればいいですか? 質問する

辞書が空かどうか確認するにはどうすればいいですか? 質問する

辞書が空かどうかをチェックしようとしていますが、正しく動作しません。単にスキップされ、メッセージの表示以外には何も表示されずにONLINE と表示されます。なぜか理由がわかりますか?

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

ベストアンサー1

空の辞書評価するFalsePythonの場合:

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

おすすめ記事