Python 我想保存一个变量,该变量将不断更改存储在其中的值。我想保存每个值。我该怎么做?

Python 我想保存一个变量,该变量将不断更改存储在其中的值。我想保存每个值。我该怎么做?,python,discord,discord.py,discord.py-rewrite,Python,Discord,Discord.py,Discord.py Rewrite,我有一个discord机器人,它不断地存储用户发送的消息。我想将这些消息保存在某个地方,然后在调用bot时,我想随机发送我保存的其中一条消息。或者向他们显示我保存的所有邮件的列表 代码如下: @client.command() async def quote(ctx,user:discord.Member,*,message): color=discord.Color(value=0x9C2A00) async for messages in ctx.channel.histor

我有一个discord机器人,它不断地存储用户发送的消息。我想将这些消息保存在某个地方,然后在调用bot时,我想随机发送我保存的其中一条消息。或者向他们显示我保存的所有邮件的列表

代码如下:

@client.command()
async def quote(ctx,user:discord.Member,*,message):
    color=discord.Color(value=0x9C2A00)
    async for messages in ctx.channel.history(limit=1):
        pass
    em=discord.Embed(color=color,title=message,description=f'-{user}, [original](https://discordapp.com/channels/{messages.guild.id}/{messages.channel.id}/{messages.id})')
    await ctx.send(embed=em)
我想继续保存'em'变量。或者我想更具体地说是em变量的标题和描述

em_dict = {}
em_dict[message] = em
# 'em' can then be used to store another item, and that item can be stored in
# the em_dict with a different message or user key
我尝试将变量
em
存储在一个列表中,结果成功了!但是,它只存储
em
的最后一个值。我想存储
em
的每个值。 我所做的如下:

em=#the code
em_list=[]
em_list.append(em)

但是,每次给“em”一个新值时,列表中的旧值都会被新值覆盖。我想存储每个值,而不仅仅是最新的值。

有两种方便的方法来存储数据:列表或字典

如果您存储的是一对key:value数据,那么最好使用字典。在字典中,关键是指向值的内容。每个值都有一个键,可以用它在字典中定位。因此,如果您想将数据存储为键值对,其中键可以是“用户名”或“消息”名称,而值可以是“em”变量

em_dict = {}
em_dict[message] = em
# 'em' can then be used to store another item, and that item can be stored in
# the em_dict with a different message or user key
然而,如果您只想存储“em”的内容,而不管它对应的是哪个“用户”或“消息”标题,您只需创建“em”临时存储的所有变量的列表:

em_list = []
em_list.append(em)
# Then change the value of em and store it using the list's append() method.

字典和列表都可以使用for循环来存储“em”值。存储数据有两种方便的方法:列表或字典

如果您存储的是一对key:value数据,那么最好使用字典。在字典中,关键是指向值的内容。每个值都有一个键,可以用它在字典中定位。因此,如果您想将数据存储为键值对,其中键可以是“用户名”或“消息”名称,而值可以是“em”变量

em_dict = {}
em_dict[message] = em
# 'em' can then be used to store another item, and that item can be stored in
# the em_dict with a different message or user key
然而,如果您只想存储“em”的内容,而不管它对应的是哪个“用户”或“消息”标题,您只需创建“em”临时存储的所有变量的列表:

em_list = []
em_list.append(em)
# Then change the value of em and store it using the list's append() method.

字典和列表都可以使用for循环来存储“em”值。请参阅有关列表处理的任何教程。特别是

# Do this once: initialize your list
em_list=[]
...

# In your code that executes multiple time:

    em=#the code
    em_list.append(copy(em))

# hHen that is all done ...
for em in em_list:
    # Do whatever you want with each element in the list
    print(em)

同样,请参考任何关于列表处理的教程。特别是

# Do this once: initialize your list
em_list=[]
...

# In your code that executes multiple time:

    em=#the code
    em_list.append(copy(em))

# hHen that is all done ...
for em in em_list:
    # Do whatever you want with each element in the list
    print(em)

您需要复制变量。否则,每次更新时,其所有引用都将指向新值

em_list = []
# when em updates:
em2 = em
em_list.append(em2)
# when em updates again:
em3 = em
em_list.append(em3)
更好的方法是根本不将值存储在变量中。您可以直接将它们附加到列表中,而不需要名称:

em_list = []
em_list.append(1)
em_list.append(2)
em_list.append(3)

您需要复制变量。否则,每次更新时,其所有引用都将指向新值

em_list = []
# when em updates:
em2 = em
em_list.append(em2)
# when em updates again:
em3 = em
em_list.append(em3)
更好的方法是根本不将值存储在变量中。您可以直接将它们附加到列表中,而不需要名称:

em_list = []
em_list.append(1)
em_list.append(2)
em_list.append(3)


你自己说的:一份清单。如果您不知道如何在列表中累积一系列值,那么您需要学习有关该主题的教程。@Prune-Hey!是的,在列表中存储变量em有效!唯一的问题是,每次给em一个新值时,旧值都会被覆盖。我想存储给em的所有值。你知道我怎么做吗?这是我现在的代码:正如你已经说过的,使用一个列表。不要覆盖标量变量;附加到列表中。如果您有编码问题,请提供预期的。这里不接受场外链接。关键信息进入你的问题,而不是评论。对不起!!我不知道场外链接是不允许的。我是编程新手,我不太明白你所说的“不要覆盖你的标量变量”;附加到列表。我编辑了我的问题,以包括你所说的关于关键信息的内容。你自己说的:一个列表。如果您不知道如何在列表中累积一系列值,那么您需要学习有关该主题的教程。@Prune-Hey!是的,在列表中存储变量em有效!唯一的问题是,每次给em一个新值时,旧值都会被覆盖。我想存储给em的所有值。你知道我怎么做吗?这是我现在的代码:正如你已经说过的,使用一个列表。不要覆盖标量变量;附加到列表中。如果您有编码问题,请提供预期的。这里不接受场外链接。关键信息进入你的问题,而不是评论。对不起!!我不知道场外链接是不允许的。我是编程新手,我不太明白你所说的“不要覆盖你的标量变量”;附加到列表中。“我已经编辑了我的问题,以包括您所说的关于关键信息的内容。谢谢!但是每次我把它们添加到列表中,它会覆盖第一个吗?因为变量名还是一样的?或者,即使它没有覆盖它,每个em也将等于相同的东西?哦!我才明白你的意思!然而,这种存储数据的方法仍然存在问题。我有3条信息要保存;我想保存发送邮件的人的用户名,保存邮件内容,然后保存邮件链接。然而,使用字典,我只能存储其中一个值!我真的很抱歉一直打扰你。我尝试了你建议的列表方法,效果很好!!唯一的问题是,每次新的“em”被添加到列表中,旧的“em”就会被覆盖。有没有办法解决这个问题?以下是我迄今为止的代码:指向您代码的非现场链接在这里是无用的:请记住该网站的用途。在字典上的注释@sanguine上,您可以将这些值存储为嵌套字典。你可能需要上厕所