只显示字典中的真值

Display only True values in a dictionary

我正在尝试显示来自字典的成员的权限,如

permdict = {
                    'Administrator': f'{member.guild_permissions.administrator}',
                    'Ban Members': f'{member.guild_permissions.ban_members}',
                    'Kick members': f'{member.guild_permissions.kick_members}'}

此刻这将 return 类似于 :

{'Administrator': 'True', 'Ban Members': 'True', 'Kick members': 'True'}

or false 如果用户没有这些权限,我的目标是能够过滤具有 True 值的键,所以如果用户只有 x/3 权限(字典会更大,但我不想继续,除非我能够解决我的问题),以仅显示具有 True 值的键,如果用户在字典中具有 none 权限,它将 return 什么都没有或字符串 ex You have no moderation roles to dispaly 并且如果存在某些权限以仅通过按键 Administrator, Kick members 等显示它们。 .我没有太多地使用字典中的布尔值,所以我希望我能在这里找到解决方案。

我也试过把它和.join结合起来:

 permdict = {'Administrator': f'{member.guild_permissions.administrator}',
                    'Ban Members': f'{member.guild_permissions.ban_members}',
                    'Kick members': f'{member.guild_permissions.kick_members}'}

 permf = ", ".join(permdict) ​

结果是我想要的

Administrator, Ban Members, Kick members ​

但问题是,即使用户没有这些权限,它们仍会显示。我觉得我很接近找到解决方案,但我想不出来

使用带有条件的生成器:

permf = ", ".join(key for key, value in permdict.items() if value == "True")

如果您将 permdict 更改为包含布尔值而不是字符串,则可以稍微简化一些事情。

permdict = {
    'Administrator': {member.guild_permissions.administrator,
    'Ban Members': member.guild_permissions.ban_members,
    'Kick members': member.guild_permissions.kick_members
}
permf = ", ".join(key for key, value in permdict.items() if value)