为了账号安全,请及时绑定邮箱和手机立即绑定

获取列表索引必须是整数或切片,而不是 str

获取列表索引必须是整数或切片,而不是 str

慕勒3428872 2021-08-05 16:12:35
编写一个名为“jsonFilter”的函数,它接受一个 JSON 格式的字符串作为对象数组格式的参数,其中每个对象都有键“质量”、“密度”、“温度”和“速度”,每个键映射到一个浮点数。此函数应以相同格式将输入作为 JSON 字符串返回,但仅包含速度大于 38.11 的对象。import jsondef jsonFilter(JSON):    load = json.loads(JSON)    for key, value in load["velocity"]:        if value > 38.11:            return load['velocity'][key]我得到的列表索引必须是整数或切片,而不是 str。我究竟做错了什么?
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

IIUC,做:


import json

def jsonFilter(JSON):

    load = json.loads(JSON)

    return json.dumps([i for i in load if i['velocity']>38.11])

现在:


print(jsonFilter(your_json))

是:


"[{'density': 957.29, 'mass': 46.42, 'temperature': 73.39, 'velocity': 97.98}, {'density': 167.29, 'mass': 74.63, 'temperature': 26.29, 'velocity': 39.96}]"


查看完整回答
反对 回复 2021-08-05
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

import json 

def jsonFilter(JSON): 

    load = json.loads(JSON) 

    array = []

    for i in load:  

        if i['velocity'] > 38.11: 

            array.append(i)

    return json.dumps(array)


查看完整回答
反对 回复 2021-08-05
?
四季花海

TA贡献1811条经验 获得超5个赞

如果没有看到实际输入,这有点困难,但可能的问题是,正如您所说,您正在接收一个 JSON 数组并尝试通过键访问它。也就是说,如果 JSON 参数是一个 json 对象的 json 数组,它将作为字典列表加载。列表只能通过整数访问。在这种情况下,为了能够访问任何给定对象的“速度”,您首先需要使用整数索引该对象。


查看完整回答
反对 回复 2021-08-05
  • 3 回答
  • 0 关注
  • 328 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信