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

编写一个名为“jsonFilter”的函数,它接受一个 JSON 格式的字符串作为对象数组格式的参数,其中每个对象都有键“质量”、“密度”、“温度”和“速度”,每个键映射到一个浮点数。此函数应以相同格式将输入作为 JSON 字符串返回,但仅包含速度大于 38.11 的对象。


import json

def jsonFilter(JSON):

    load = json.loads(JSON)

    for key, value in load["velocity"]:

        if value > 38.11:

            return load['velocity'][key]

我得到的列表索引必须是整数或切片,而不是 str。我究竟做错了什么?


慕勒3428872
浏览 329回答 3
3回答

DIEA

IIUC,做:import jsondef 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}]"

犯罪嫌疑人X

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)

四季花海

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

相关分类

Python