我试图判断字典是否是空的,但它的行为不正常.它只是跳过它,显示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()))    

推荐答案

Python中的空字典evaluate to False:

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

Python相关问答推荐

如何将 map 数组组合到pyspark中每列的单个 map 中

Flask:如何在完整路由代码执行之前返回验证

如何将桌子刮成带有Se的筷子/要求/Beautiful Soup ?

symy.分段使用numpy数组

如何根据情况丢弃大Pandas 的前n行,使大Pandas 的其余部分完好无损

Python中的负前瞻性regex遇到麻烦

即使在可见的情况下也不相互作用

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

重新匹配{ }中包含的文本,其中文本可能包含{{var}

为什么带有dropna=False的groupby会阻止后续的MultiIndex.dropna()工作?

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

为什么这个带有List输入的简单numba函数这么慢

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

加速Python循环

pyscript中的压痕问题

Pre—Commit MyPy无法禁用非错误消息

旋转多边形而不改变内部空间关系

基于行条件计算(pandas)

比Pandas 更好的 Select

如何过滤组s最大和最小行使用`transform`'