只显示字典中的真值
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)
我正在尝试显示来自字典的成员的权限,如
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)