Понимание следующего фрагмента кода - PullRequest
0 голосов
/ 20 июня 2020

Следующая программа используется для преобразования в список, полученный из nba_api, в фрейм данных, но неспособный понять функцию относительно того, что она хочет передать или что она выполняет. Может кто-нибудь помочь мне понять это.

from nba_api.stats.static import teams
import pandas as pd

nba_teams = teams.get_teams()
print(nba_teams[:5])

def one_dict(list_dict):  #Creating function one_dict

#could'nt understand it further than this.

    keys = list_dict[0].keys()
    out_dict = {key:[] for key in keys }
    for dict_ in list_dict:
        for key, value in dict_.items():
            out_dict[key].append(value)
    return out_dict

dict_nba_team = one_dict(nba_teams)

df_team = pd.DataFrame(dict_nba_team)
print(df_team.head())

1 Ответ

0 голосов
/ 21 июня 2020

Давайте разберемся с тем, где вы застряли:

# we get the keys from the first dict passed to the function
keys = list_dict[0].keys()

# we initialize a new dict where the definition for each key is an empty list
out_dict = {key:[] for key in keys }

for dict_ in list_dict:
        # for each key in dict_ you append the value to the the list associated to this key in the out_dict
        for key, value in dict_.items():
            out_dict[key].append(value)

Фактически, этот фрагмент кода объединяет словари в list_dict в один для создания DataFrame. На самом деле это бесполезно, потому что pandas может создавать DataFrame прямо из списка словарей:

dict_1 = {'A': 22, 'B': 42}
dict_2 = {'A': 28, 'B': 1}

list_dict = [dict_1, dict_2]
df = pd.DataFrame(list_dict)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...