JSON/Python -基于高分值的排序/重排序[已关闭]

x6492ojm  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(103)

已关闭,此问题需要更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,因为我的大脑是油炸。我也看过其他的帮助论坛,但事实是,发现很难正确解释/阅读一些不那么具体的东西。

z3yyvxxp

z3yyvxxp1#

["db_Score"][0]只返回"db_Score";你不用lambda变量
lambda n: n["db_Score"]将从列表中的每个元素中提取该值,因此您可以进行排序
您还需要.sort(),因为sorted()是一个独立函数
https://docs.python.org/3/howto/sorting.html
删除4...这不是一个有效的参数
sort()接受两个只能通过关键字传递的参数

相关问题