3

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"
            }
        ]

ここで行う必要があるのは、どの「id」属性が最も大きいかを見つけることです。それが最新の目標になるからです。

このような特定の属性で並べ替えるにはどうすればよいですか?

この質問を見たことがありますが、答えがよくわかりません。

編集: 言い換えると、混乱して申し訳ありません。

必ずしもそれらを再配置する必要はありませんが、リスト内のどのアイテムが最大の ID を持っているかを特定し、それを使用するにはどうすればよいですか?

4

2 に答える 2

1

Xが「最近」またはその他のものである場合、リスト内の「最もX」の項目がmax()必要な場合は、オプションのキー関数を取ることができる を使用します。operator.itemgetter()この場合に必要なものは次のとおりです。

from operator import itemgetter
data = json.loads("whatever")
latest_goal = max(data["away_team_events"], key=itemgetter("id"))

または (Martijn と Burhan が指摘しているように) 辞書のリストが既に でソートされていることを保証できる場合はid、最後の辞書を取得するだけで機能します。

latest_goal = data["away_team_events"][-1]
于 2014-06-20T21:02:55.210 に答える