python - .get() python json 文件不和谐机器人

标签 python python-3.x bots leaderboard keyerror

我有一个 json 文件,用于存储在我的服务器上写入的 ids、xp 和级别。 我正在制作一个排行榜来向我的服务器上拥有最多 XP 的人展示, 但是出现一个关键错误: key 错误:'370034734186758173'

有人可以帮我修复这个错误吗?

最佳答案

访问users字典时将使用.get。您可以将第二个参数添加到调用中作为默认参数(如果您找不到这样的键),在第一个调用中您应该输出一个空字典,以便第二个 .get不会失败。

lb = list(map(lambda m: (m, users.get(m.id, {}).get("xp"), message.server.members))

既然你要从中创建一个列表,你可能还想尝试(更Pythonic的)列表理解(并不是说你的行有任何问题):

lb = [ (m, users.get(m.id, {}).get("xp") for m in message.server.members ]

请注意,当 get 在字典中找不到 Key 时,这两种方法都会返回 None 项,您可以在列表理解中使用 if 子句忽略此项:

lb = [ (m, users.get(m.id, {}).get("xp") for m in message.server.members if m.id in users ]
<小时/>

作为旁注,我想补充一点,您已将所有内容包含在上下文管理器子句中(with open():),而仅加载其内容的行是必需的。最好的做法是取消代码其余部分的缩进。

关于python - .get() python json 文件不和谐机器人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50240627/

相关文章:

python - pytorch在顺序模型中跳过连接

与方法相关的python代码行为

python-3.x - 生成器函数在各种迭代上下文中的行为不同

botframework - Microsoft Bot与Whatsapp的集成

ssh - 如何通过 SSH 运行 PHP 脚本并在我退出后保持运行

python - 按 Django 中的 is_active bool 字段过滤

python - 嵌套 json 的 .get 方法不起作用

python - 根据字符串中的值将字符串列表转换为 pandas DataFrame

javascript - 如何使用 Discord 机器人嵌入消息?

python - python 中的线程池没有预期的那么快