我有一个 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/