gpt4 book ai didi

python - 我如何利用列表理解的索引?

转载 作者:太空宇宙 更新时间:2023-11-04 11:20:00 26 4
gpt4 key购买 nike

我正在尝试根据每个数组中包含的值来过滤 JSON 数组。提供了一些用户输入,我只想返回基于类型的相关值。

示例 json:

{
"routes": [
{
"name": "Golden Shower",
"type": "Boulder",
"rating": "V5",
"stars": 5,
"starVotes": 131,
"pitches": ""
},
{
"name": "Girls Only",
"type": "Sport",
"rating": "5.10a",
"stars": 4.9,
"starVotes": 156,
"pitches": "1"
}
],
"success": 1
}

我曾尝试使用针对类似问题提供的代码示例的一些变体,但由于数据结构稍微复杂一些,我遇到了问题。请参阅:how to filter json array in python

我尝试了几种代码变体。所有的错误都围绕着索引的不当使用。我尝试过的一些事情。

routeData = routesByGpsResp.json()
input_dict = routeData
output_dict = [x for x in input_dict if x['type'] == 'Sport']

错误:字符串索引必须是整数

output_dict = [x for x in input_dict.items() if ['routes'][x]['type'] == 'Sport']

错误:列表索引必须是整数或切片,而不是元组

我能够使用 for 语句和索引打印路由名称列表,但似乎无法理解列表。

for key in range(len(routeData['routes'])):
print(routeData['routes'][key]['name'])

列表理解是错误的方法吗?我应该改用 for 语句吗?

感谢任何帮助!

最佳答案

注意:您所有的尝试都是列表推导,而变量名称建议dict推导 ( [Python]: PEP 274 -- Dict Comprehensions ).

这是一个示例,说明如何根据您的 input_dict 和条件获取 output_dict(以及下面的 output_list)。请注意:dict 理解为 “路线” 键,而所有其他键的值保持不变:

>>> output_dict = {k: v if k != "routes" else [i for i in v if i["type"] == "Sport"] for k, v in input_dict.items()}
>>>
>>> from pprint import pprint
>>>
>>> pprint(output_dict)
{'routes': [{'name': 'Girls Only',
'pitches': '1',
'rating': '5.10a',
'starVotes': 156,
'stars': 4.9,
'type': 'Sport'}],
'success': 1}
>>>
>>> # Or if you only want the list
...
>>> output_list = [i for i in input_dict.get("routes", list()) if i["type"] == "Sport"]
>>>
>>> pprint(output_list)
[{'name': 'Girls Only',
'pitches': '1',
'rating': '5.10a',
'starVotes': 156,
'stars': 4.9,
'type': 'Sport'}]

关于python - 我如何利用列表理解的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56210890/

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