You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在打印前排序JSON浮点型金额数据?TypeError报错解决

解决TypeError: 'float' object is not iterable问题

你的问题出在对单个浮点值调用sorted()函数上,我来帮你理清楚问题所在:

  • 当你遍历data['NotAdmin']时,每个c都是一个完整的用户字典,比如{ "money": 200.0, "name": "Sam", "password": "1234" }
  • c["money"]是单个的浮点数值(比如200.0),但sorted()函数要求传入可迭代对象(比如列表、元组这类能逐个遍历的集合),直接传单个float自然会触发迭代错误。

方案1:仅提取并排序所有金额值

如果你只需要得到排序后的金额列表,可以先把所有用户的money值收集到一个列表里,再进行排序:

import json

with open("cash.json", "r", encoding="utf-8") as f:
    data = json.load(f)
    # 提取NotAdmin组所有用户的金额到列表
    money_list = [user["money"] for user in data['NotAdmin']]
    # 对金额列表排序
    sorted_money = sorted(money_list)
    print(sorted_money)

运行后会输出:[100.0, 150.0, 200.0]

方案2:按金额排序用户(保留完整信息)

如果想保留用户的姓名、密码等信息,同时按金额排序,可以直接对NotAdmin用户列表排序,用key参数指定按money字段排序:

import json

with open("cash.json", "r", encoding="utf-8") as f:
    data = json.load(f)
    # 按金额升序排序用户列表
    sorted_users = sorted(data['NotAdmin'], key=lambda x: x["money"])
    # 遍历输出排序后的用户信息(也可以只输出金额)
    for user in sorted_users:
        print(f"姓名: {user['name']}, 金额: {user['money']}")

运行后输出:

姓名: Ali, 金额: 100.0
姓名: Jasmin, 金额: 150.0
姓名: Sam, 金额: 200.0

如果需要降序排序,只需给sorted()添加reverse=True参数:

sorted_users = sorted(data['NotAdmin'], key=lambda x: x["money"], reverse=True)

内容的提问来源于stack exchange,提问作者sadiq ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:39:51