【问题标题】:Make directory system from user id in python list从 python 列表中的用户 id 创建目录系统
【发布时间】:2021-03-26 12:35:41
【问题描述】:

请帮忙!

好吧,首先,我将解释这应该做什么。我正在尝试将来自不和谐的用户和服务器存储在带有 id 的列表中(使用机器人的用户和机器人所在的服务器)。

例如:

class User(object):
  name = ""
  uid = 0

现在,所有 discord id 都很长,我想在我的列表中存储大量用户和服务器(每个列表一个列表),但假设我的列表中有 10.000 个用户,我想获得最后一个(不知道这是最后一个),这将花费很多时间。相反,我认为我可以创建一个目录系统,用于将用户存储在列表中并快速找到它。它是这样工作的:

我可以轻松获得 id,所以想象一下我的 id 是12345。 现在,我使用 python str(id) 函数将其转换为字符串,并将其存储在变量 strId 中。 对于列表的每个数字,我将其用作用户列表的索引,如下所示:

User() 是存储用户的位置

users_list = [[[], [[], [], [[], [], [], [User()]]]]]
actual_dir = 0
for digit in strId:
  actual_dir = digit

user = actual_dir[0]

这就是我接触用户(或类似的东西)的方式

现在,这就是我的问题所在。我知道我可以通过 id 获取用户来轻松获取用户,但是当我想保存更改时,我应该执行类似 users_list[1][2][3][4][5] = changed_user_variable 的操作,但我知道我不能执行类似 list[1] += [2] 的操作

有什么方法可以联系到用户并保存更改?

提前致谢

【问题讨论】:

    标签: python list directory


    【解决方案1】:

    您可以使用python字典,其中用户ID作为键,用户对象作为值。我在自己的电脑上进行了测试,发现在有 1000 万用户的字典中找到 100 000 个随机用户只需要 0.3 秒。这种方法要简单得多,我猜它也一样快,如果不是更快的话。

    您可以创建字典并添加用户:

    users = {}
    
    users[userID] = some_user
    

    (许多其他方法)

    通过使用字典,您可以通过以下方式轻松更改用户的字段:

    users[userID].some_field = "Some value"
    

    或覆盖您最初添加用户的相同方式。

    【讨论】:

    • 谢谢。我一开始就这样做了,但是我正在使用 repl.it 并且我收到一个错误,告诉我字典不是 json 可序列化的。现在,由于某种原因,错误消失了。
    猜你喜欢
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2013-02-06
    相关资源
    最近更新 更多