gpt4 book ai didi

python - 如何在打印之前对 JSON float 据进行排序

转载 作者:行者123 更新时间:2023-11-28 21:38:35 25 4
gpt4 key购买 nike

我正在尝试获取 JSON 文件中的数据,但在打印出来之前,我想对 money 进行排序。这是我的代码

with open("cash.json", "r", encoding="utf-8") as f:
data = json.load(f)
for c in data['NotAdmin']:
a_new_list = sorted(c["money"])
print(a_new_list)

这是我的 cash.json 文件中的内容

{
"NotAdmin": [
{
"money": 200.0,
"name": "Sam",
"password": "1234"
}, {
"money": 150.0,
"name": "Jasmin",
"password": "1573"
}, {
"money": 100.0,
"name": "Ali",
"password": "1856"
}
],
"admin": [
{
"name": "Adam",
"password": "6767"
}, {
"name": "Eva",
"password": "2222"
}
]
}

我不断收到此错误 TypeError: 'float' object is not iterable

最佳答案

您收到 TypeError 的原因是你在遍历 dictionariesNotAdmin list并尝试申请 sorted money 的功能属性。当您尝试对 float 进行“排序”时,这显然会失败。 (?).

所以,sorted (或 sort 函数修改 iterable 到位)工作是采取 iterable并对每个元素应用“评估”功能,以便对它们进行排序。此函数可以在 key 下传入参数,或者如果没有传入,Python 将自动决定如何对元素进行排序。

要将其应用到我们的代码中,我们需要使用 data["NotAdmin"]列出并应用 .sort使用 key 的方法选择 money每个字典的属性。我们可以用(匿名)lambda 来做到这一点功能。

所以,这里是完整的代码:

with open("cash.json", "r", encoding="utf-8") as f:
data = json.load(f)
data["NotAdmin"].sort(key = lambda d: d["money"])
print(data)

输出:

{'admin': [{'password': '6767', 'name': 'Adam'}, {'password': '2222', 'name': 'Eva'}], 'NotAdmin': [{'password': '1856', 'money': 100.0, 'name': 'Ali'}, {'password': '1573', 'money': 150.0, 'name': 'Jasmin'}, {'password': '1234', 'money': 200.0, 'name': 'Sam'}]}

此外,如果您希望元素按降序顺序排列,那么我们可以查看the documentation。并看到我们可以设置 reverse标记为 True .

这只会将行更改为:

...
...
data["NotAdmin"].sort(key = lambda d: d["money"], reverse = True)
...

关于python - 如何在打印之前对 JSON float 据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48050695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com