如何在 Python 中查找 JSON 列表中给定属性的哪一项具有最大值?

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 并使用它?

Hai*_* Vu 5

这是我的解决方案,它使用了该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_events
  • events['away_team_events']是一个包含 7 项的列表。从此列表中,我们将选择具有最大事件 ID 的项目