繁体   English   中英

比较 Python 中列表的匹配元素

[英]Comparing matching elements of a list in Python

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

{
  "List1": [
    "name1",
    "name2",
    "name3",
    "name4",
    "name5",
  ],
  "List2": [
    "emoji1",
    "emoji2",
    "emoji3",
    "emoji4",
    "emoji5",
  ]
}

字符在第二个列表中找到项目,我需要使其与第一个列表中的专有名称相对应。 它们的顺序已经正确,因此第 5 个名称与第 5 个表情符号匹配。 如果相关,我正在使用这种方法来查找玩家拥有的表情符号:

        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 和 Idk 如何解析它。

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

您可以在列表上使用index()来查找获取您正在搜索的项目的索引。 但是,如果您经常这样做或者列表真的很长,这真的很昂贵。 相反,您应该使用字典:

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'}

我能够做到这一点:

        bag = bag[0]['items']
        emj = c['smiley']
        nam = c['words']
        for x in emj:
            if x in bag:
                for x in [emj.index(x)]:
                    J = c['words'][x]

我现在的问题是,当J分配给 Discord 嵌入 field.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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM