【问题标题】:How to create/add to an array of json objects from an already existing list (discord.py related)?如何从已经存在的列表(discord.py 相关)中创建/添加到 json 对象数组?
【发布时间】:2020-07-25 10:55:33
【问题描述】:

最初的问题有点难以用词。

我正在使用 discord.py,我想基本上浏览我服务器中的整个成员列表,并将他们的名字和一个数字作为对象添加到 json 文件中。

所以应该是这样的

for member in ctx.message.guild.members:

    *add member.name*
    *add skill level 0*  

json 文件中的结果是

[{
   Name: Plzwork
   SkillLevel: 5
},
{
   Name: Blah
   SkillLevel: 5
},

等等…… 我试着查了一下,但我认为没有直接的答案。

同样反过来,你如何遍历现在创建的 json 数组,并在 python 中将名称读取为字符串,将技能级别读取为 int?

【问题讨论】:

  • 您能否更具体地说明问题所在?你知道如何使用 Python 字典吗?

标签: python json discord discord.py


【解决方案1】:

你会做这样的事情

import json
memberList = []
for member in ctx.message.guild.members:
    memberList.append({'name': member.name, 'skillLevel': member.skillLevel})
print(json.dumps(memberList))

我不知道这是否是引用成员技能级别的正确方法。这只是一个指导方针。

使用列表推导的另一种单行代码是这样的

import json
result = json.dumps([{'name': x.name, 'skillLevel': x.skillLevel} for x in members])
print(result)

要遍历 json,您可以使用将其从 json 字符串转换为对象

parsed = json.loads(result)
for member in parsed:
    print(member['name'] + " " + str(member['skillLevel']))

再次使用列表理解的单行代码如下

parsed = json.loads(result)
[print(member['name'] + " " + str(member['skillLevel'])) for member in parsed]

【讨论】:

  • 技能级别只是我想添加到 json 对象的自定义数字。它不是“成员”的一部分
  • 哦,那么只需将 member.skillLevel 替换为您想要使用的任何值
  • 顺便说一句,变量和函数名称通常应遵循lower_case_with_underscores 样式..
猜你喜欢
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2013-04-27
  • 2019-12-23
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多