Как преобразовать список словарей в нужный формат для использования API

#list

Вопрос:

 Please guys,How do I iterate this list and group some keys and values based on common keys 
 

и значения с использованием python?

У меня есть Jsonresponse, который должен использоваться API в определенном порядке. Я просмотрел эту платформу и увидел много примеров, и попробовал большинство из них безрезультатно, и решил изложить проблему здесь, чтобы вы, ребята, помогли мне. Я новичок в python.

 input
[
    {"id": "3", "name": "John",
        "team": "corinthians", "coach": "Chris"},
    {"id": "2", "name": "Ben",
     "team": "palmeiras", "coach": "Aron"},
    {"id": "6", "name": "Frank",
     "team": "palmeiras", "coach": "Aron"}, 
    {"id": "7", "name": "Evan",
     "team": "corinthians", "coach": "Chris"}, 
    {"id": "1", "name": "Micheal",
     "team": "palmeiras", "coach": "Aron"},
    {"id": "10", "name": "Zack",
     "team": "santos", "coach": "David"}

] 

Expected output

The players are grouped by their team and coach reducing the need of repeating a player to the same  team and coach every time.

I need to present the data in this format.kindly help me out guys.Thanks

[{"players": 
            [{"id": "3", "name": "John"}, {"id": "7", "name": "Evan"}], "team": "corinthians",
"coach": "Chris"},
        {"players": [{"id": "2", "name": "Ben"}, {"id": "6", "name": "Frank"}, {"id": "1", 
"name": "Micheal"}], "team": "palmeiras", "coach": "Aron"}, 
        {"players": [{"id": "10", "name": "Zack"}], "team": "santos", "coach": "David"}]
             
 

Ответ №1:

Этот код сохранит нужные вам выходные данные в result переменной.

 input = [
    {"id": "3", "name": "John",
        "team": "corinthians", "coach": "Chris"},
    {"id": "2", "name": "Ben",
     "team": "palmeiras", "coach": "Aron"},
    {"id": "6", "name": "Frank",
     "team": "palmeiras", "coach": "Aron"}, 
    {"id": "7", "name": "Evan",
     "team": "corinthians", "coach": "Chris"}, 
    {"id": "1", "name": "Micheal",
     "team": "palmeiras", "coach": "Aron"},
    {"id": "10", "name": "Zack",
     "team": "santos", "coach": "David"}]

result = []
teamsAdded = set()
for player in input:
    if (player['team'] not in teamsAdded):
        teamsAdded.add(player['team'])
        result.append({"team": player['team'], "coach": player['coach'], "players": [{"id": player['id'], "name": player['name']}]})
    else:
        for team in result:
            if team['team'] == player['team']:
                team['players'].append({"id": player['id'], "name": player['name']})
 

Комментарии:

1. Большое вам спасибо @Tyler Liu.вы решили эту проблему за меня. Я действительно благодарен.

2. Теперь у меня есть еще одно сомнение @Тайлер Лю. Что, если бы тренер мог тренировать больше, чем команду, как бы я мог это представлять? Заранее спасибо.

3. Я считаю, что в этом случае это все равно было бы правильно. Я сменил тренера «Сантоса» на Арона, и, похоже, результат правильный. Если вы нашли мой оригинальный ответ полезным, пожалуйста, подумайте о том, чтобы проголосовать и отметить его как принятый.