已关闭,此问题需要更focused。它目前不接受回答。
**想改善这个问题吗?**更新问题,使其只关注editing this post的一个问题。
15分钟前关闭
Improve this question
我正在创建一个游戏(21点),并在JSON文件(savefile.json)中获得了以下项目。
{
"Players": [
{
"db_Name": "John",
"db_Score": 2000
},
{
"db_Name": "Julia",
"db_Score": 2500
},
{
"db_Name": "Jane",
"db_Score": 1000
}
]
}
功能目标:
1.从JSON文件中读取,根据得分最高的球员,从第一名到第十名按升序列出每个球员(他们的名字和得分)。
1.追加前,先从JSON文件中读取,如果球员名字已经存在,检查分数,如果分数重复,不追加。
1.保存每个列出的球员(1至10)在一个变量,使其易于编码。
下面是我的Python代码(savegame.py)目前的样子,只是为了保存过程。请尝试以类似的方式编写,因为我有时很难理解代码:
def write_json(data, filename="savefile.json"):
with open(filename, "w") as f:
json.dump(data, f, indent=4)
with open("savefile.json") as json_file:
data = json.load(json_file)
temp = data["Players"] # read all items in Players
newdata = {"db_Name": name, "db_Score": 90000, }
# temp.append(newdata) # updates json
print(temp.sorted(4, key=lambda n: ["db_Score"][0], reverse=True))
write_json(data)
希望将其添加到我的PySimpleGUI模块中(减去赢得的手,因为在这一点上太多的努力):
不断得到键值错误,或者我知道如何搜索每一个项目,而不是重复整个JSON文件。如果可能的话,我宁愿不使用Pandas,因为我的大脑是油炸。我也看过其他的帮助论坛,但事实是,发现很难正确解释/阅读一些不那么具体的东西。
1条答案
按热度按时间z3yyvxxp1#
["db_Score"][0]
只返回"db_Score"
;你不用lambda变量lambda n: n["db_Score"]
将从列表中的每个元素中提取该值,因此您可以进行排序您还需要
.sort()
,因为sorted()
是一个独立函数https://docs.python.org/3/howto/sorting.html
删除
4
...这不是一个有效的参数sort()接受两个只能通过关键字传递的参数