【问题标题】:How do I deal with a dictionary of objects that is constantly changing in Python?如何处理 Python 中不断变化的对象字典?
【发布时间】:2018-01-15 08:17:41
【问题描述】:

目前情况: 我正在使用 Discord 的 API 来检索服务器中的成员对象字典。随着新成员的加入和老成员的离开,这本词典的大小不断变化。

我目前有一个运行时间约为 30 分钟的程序并访问此成员对象字典,因此可以保证当我在程序中对其进行迭代时该字典会更改大小;这会导致我的 for 循环出错。我好像也不能deepcopy这本词典;

TypeError: can't pickle dict_values objects

关于如何解决此问题的任何想法?

代码:
for i in members: do something; 尝试这个也行不通:
temp = copy.deepcopy(成员)
这就是字典:dict_values([<discord.member.Member object at 0x1094b3268>, <discord.member.Member object at 0x1094b32f0>, etc

【问题讨论】:

  • 听起来您可能需要使用互斥锁来保护它。是什么在改变它?你的代码还是其他东西?
  • 只是在这里扔掉一些东西:也许把它放在数据库中?
  • TypeError: can't pickle dict_values objects 呃,那么你到底在做什么导致这个错误。 pickle.dumps(some_dict.values()) 之类的东西会发生这种情况
  • 将字典变成键列表,并将其分配给新变量。然后遍历键。然后一次访问一本字典。或者你可以使用dict.keys()

标签: python dictionary discord


【解决方案1】:

这是我最终解决问题的方法:
temp = copy.deepcopy(list(members))

【讨论】:

    猜你喜欢
    • 2022-11-27
    • 2011-02-25
    • 1970-01-01
    • 2011-09-03
    • 2020-11-29
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多