eva*_*vid 3 python sorting json json-api
我正在使用来自SFG WorldCup API的 JSON 数据。
我需要做的是找到给定球队在给定比赛中的最新进球。为此,我需要按attribute数组中每个元素(即属性的属性)中的键值进行排序away_team_events。
让我举例说明。
以下是正在进行的(在撰写本文时)法国对阵瑞士的法国比赛的 JSON 示例。
"away_team_events": [
{
"id": 276,
"type_of_event": "goal",
"player": "Giroud",
"time": "17"
},
{
"id": 277,
"type_of_event": "goal",
"player": "Matuidi",
"time": "18"
},
{
"id": 278,
"type_of_event": "penalty-wrong",
"player": "Benzema",
"time": "32"
},
{
"id": 279,
"type_of_event": "goal",
"player": "Valbuena",
"time": "40"
},
{
"id": 281,
"type_of_event": "substitution-in",
"player": "Pogba",
"time": "63"
},
{
"id": 282,
"type_of_event": "substitution-in",
"player": "Koscielny",
"time": "66"
},
{
"id": 283,
"type_of_event": "goal",
"player": "Benzema",
"time": "67"
}
]
Run Code Online (Sandbox Code Playgroud)
所以我在这里需要做的是找到哪个“id”属性最大,因为那将是最新的目标。
如何按这样的特定属性进行排序?
我看过这个问题,但我无法真正理解答案。
编辑:改写,抱歉造成混乱。
我不一定需要重新排列它们,但如何识别列表中的哪个项目具有最大的 id 并使用它?
这是我的解决方案,它使用了该max()函数。我所要做的就是告诉max如何按id字段排序(在本例中):
import json
with open('events.json') as f:
events = json.load(f)
event = max(events['away_team_events'], key=lambda ev: ev['id'])
print event
Run Code Online (Sandbox Code Playgroud)
输出:
{u'type_of_event': u'goal', u'player': u'Benzema', u'id': 283, u'time': u'67'}
Run Code Online (Sandbox Code Playgroud)
events是一个只有一个键的 JSON 数据:away_team_eventsevents['away_team_events']是一个包含 7 项的列表。从此列表中,我们将选择具有最大事件 ID 的项目| 归档时间: |
|
| 查看次数: |
12722 次 |
| 最近记录: |