比较Python中列表的匹配元素

比较Python中列表的匹配元素,python,json,list,discord.py-rewrite,Python,Json,List,Discord.py Rewrite,例如,如何使一个列表中的第5项与另一个列表中的第5项匹配,然后在匹配时发送该结果?下面是一个json的示例: { "List1": [ "name1", "name2", "name3", "name4", "name5", ], "List2": [ "emoji1",

例如,如何使一个列表中的第5项与另一个列表中的第5项匹配,然后在匹配时发送该结果?下面是一个json的示例:

{
  "List1": [
    "name1",
    "name2",
    "name3",
    "name4",
    "name5",
  ],
  "List2": [
    "emoji1",
    "emoji2",
    "emoji3",
    "emoji4",
    "emoji5",
  ]
}
字符在第二个列表中查找项目,我需要使其与第一个列表中的专有名称相对应。它们的顺序已经正确,因此第五个名称与第五个表情符号匹配。如果相关的话,我使用这种方法来查找玩家拥有的表情符号:

        scan = f"privatelink"
        async with aiohttp.ClientSession() as cs:
            async with cs.get(scan) as r:
                try: Bag = ast.literal_eval(await r.text())
                except: Bag = json.loads(await r.text())
json看起来是这样的:

[{"emojis":"emoji10,emoji20,emoji11,emoji14,emoji30,,emoji9,emoji44,emoji53,emoji16,emoji48"}]
这看起来很奇怪,我想这可能是我的问题。我想我以前没有见过这样的json,我知道如何解析它

假设我拥有第二个列表中的“emoji5”。我想将其与第一个列表中的“name5”匹配。如何匹配这些结果?

您可以在列表上使用
index()
来查找您正在搜索的项目的索引。然而,如果你经常这样做,或者清单很长,那么这真的很昂贵。相反,您应该使用dict:

x = {
    'emoji1': 'name1',
    'emoji2': 'name2',
    # etc.
}
现在,您可以使用
x['emoji1']

快速查找数据。您可以使用列表上的
index()
查找正在搜索的项目的索引。然而,如果你经常这样做,或者清单很长,那么这真的很昂贵。相反,您应该使用dict:

x = {
    'emoji1': 'name1',
    'emoji2': 'name2',
    # etc.
}

现在,您可以使用
x['emoji1']

快速查找数据。我不确定是否理解您的问题……但如果您只是想匹配两个等长列表的对应元素,请使用
zip

import json
data = json.loads("""
{
  "List1": [
    "name1",
    "name2",
    "name3",
    "name4",
    "name5"
  ],
  "List2": [
    "emoji1",
    "emoji2",
    "emoji3",
    "emoji4",
    "emoji5"
  ]
}
""")

print(dict(zip(data['List2'], data['List1'])))
印刷品:

{'emoji1': 'name1', 'emoji2': 'name2', 'emoji3': 'name3', 'emoji4': 'name4', 'emoji5': 'name5'}

我不确定我是否理解您的问题……但如果您只是想匹配两个长度相等的列表的对应元素,请使用
zip

import json
data = json.loads("""
{
  "List1": [
    "name1",
    "name2",
    "name3",
    "name4",
    "name5"
  ],
  "List2": [
    "emoji1",
    "emoji2",
    "emoji3",
    "emoji4",
    "emoji5"
  ]
}
""")

print(dict(zip(data['List2'], data['List1'])))
印刷品:

{'emoji1': 'name1', 'emoji2': 'name2', 'emoji3': 'name3', 'emoji4': 'name4', 'emoji5': 'name5'}

我能做到这一点:

        bag = bag[0]['items']
        emj = c['smiley']
        nam = c['words']
我现在的问题是,
J
当分配给一个不一致的嵌入字段时。name或description只是一次用不同的嵌入对每个字段进行垃圾邮件处理。答案是正确的,但是我如何将每个单词放入它自己的字段中,或者拆分为描述中它自己的部分,而不是为每个单词发送一个新的嵌入?我试过这个:

                    e = discord.Embed(title=f"Test", color=discord.Colour(value=), 
                    description=f'')

                    e.add_field(name=J, value=f"")
                    await ctx.send(embed=e)


但它只是添加一个带有第一个结果的字段并发送嵌入,然后发送另一个带有下一个结果的嵌入,依此类推。顺便说一句,不要介意颜色值,我仍在尝试确定lol。

我可以用这个:

        bag = bag[0]['items']
        emj = c['smiley']
        nam = c['words']
我现在的问题是,
J
当分配给一个不一致的嵌入字段时。name或description只是一次用不同的嵌入对每个字段进行垃圾邮件处理。答案是正确的,但是我如何将每个单词放入它自己的字段中,或者拆分为描述中它自己的部分,而不是为每个单词发送一个新的嵌入?我试过这个:

                    e = discord.Embed(title=f"Test", color=discord.Colour(value=), 
                    description=f'')

                    e.add_field(name=J, value=f"")
                    await ctx.send(embed=e)


但它只是添加一个带有第一个结果的字段并发送嵌入,然后发送另一个带有下一个结果的嵌入,依此类推。顺便说一句,不要介意颜色值,我仍在尝试确定lol。

我想我可能认为我遇到了与实际不同的错误,我想我的问题是解析一个json,看起来像这样:
[{“emojis”:“emoji10、emoji20、emoji11、emoji14、emoji30、emoji9、emoji44、emoji53、emoji16、emoji48”}]
因此,如果我拥有来自
Bag
json的
emoji48
,它将对应于
List2
,我希望它给出
List1
中第48项的结果。对不起,我解释得不好。可能需要注意的是,它实际上没有被称为emoji48,因此我无法根据实际的名称来编写代码。我想我可能以为我遇到了与实际不同的错误,我想我的问题是解析一个json,看起来像这样:
[{“emojis”:“emoji10、emoji20、emoji11、emoji14、emoji30、emoji9、emoji44、emoji53、emoji16、emoji48”}]
因此,如果我拥有
Bag
json中的
emoji48
,它将对应于
List2
,我希望它给出
List1
中第48项的结果。如果我没有很好地解释它,很抱歉。可能需要注意的是,它实际上没有被称为
emoji48
,因此我无法根据实际的na来确定代码我的天。@Brenda不,你没有”“对。我建议按照构建列表的方式构建它。@Brenda,看起来列表来自于某种JSON。JSON是如何构建的?它是来自API调用还是来自您控制的文件?如果它来自您无法控制的某些来源,那么我建议将列表列表转换为
dict
。我建议你也看看
zip()
函数。@Brenda不,你不“必须”去做。我建议按照构建列表的方式构建它。@Brenda,看起来列表来自于某种JSON。JSON是如何构建的?它是来自API调用还是来自您控制的文件?如果它来自您无法控制的某些来源,那么我建议将列表列表转换为
dict
。我建议也看看
zip()
函数。