Python 使用lower()进行不区分大小写的字典检查

Python 使用lower()进行不区分大小写的字典检查,python,python-3.x,discord,discord.py-rewrite,Python,Python 3.x,Discord,Discord.py Rewrite,我试图使用lower(),因此角色名不区分大小写。因此,如果用户键入的是lol而不是lol,则不会执行if语句if note-role\u-id: 我就是这样做的: @commands.command() @commands.check(lambda ctx: ctx.channel.id in [555844758778544160]) async def add(self, ctx, *, rolename): author = ctx.message.author role

我试图使用
lower()
,因此角色名不区分大小写。因此,如果用户键入的是
lol
而不是
lol
,则不会执行if语句
if note-role\u-id:

我就是这样做的:

@commands.command()
@commands.check(lambda ctx: ctx.channel.id in [555844758778544160])
async def add(self, ctx, *, rolename):
    author = ctx.message.author
    role_dict = {
        "Members":557212810468392970,
        "PS4":568761643916328960,
        "LoL":559792606364565505}
    role_id = role_dict.get(rolename.lower())
    if not role_id:
        await ctx.send("I cannot find the role {}.".format(rolename))
        return
    role = discord.utils.get(ctx.message.guild.roles, id = role_id)
    message = '{} added the role **{}**'.format(author.display_name, role.name)
    embed = discord.Embed(description=message.format(author.display_name, role.name), colour=0xff0000)
    await author.add_roles(role)
    await ctx.send("Role Added")
这里的这一行
role\u id=role\u dict.get(rolename.lower())
是我添加角色
时的罪魁祸首!添加lol
而不是
lol
这就是我得到的:


非常感谢您的帮助。

问题在于,您正在将小写的
角色名与非小写的字典键进行比较。对于不区分大小写的检查,
rolename
和dictionary键都应该是小写的

手动将字典键更改为小写:

role_dict = {
        "members":557212810468392970,
        "ps4":568761643916328960,
        "lol":559792606364565505}
或者使用dict理解以编程方式创建它,并检查
rolename.lower()
是否在小写dict中:

role_dict = {
        "Members":557212810468392970,
        "PS4":568761643916328960,
        "LoL":559792606364565505}
lowercase_dict = {k.lower():v for k,v in role_dict.items()}
role_id = lowercase_dict.get(rolename.lower())
if not role_id:
    await ctx.send("I cannot find the role {}.".format(rolename))
    return
您可能需要查看以使键不区分大小写