我有一个csv文件格式如下:
jersey number, position, name, birth_date, birth_city, years_in_nba, team
23 , SF , Lebron, 12/30/84 , Akron , 19 , Lakers
30 , PG , Curry, 03/14/88 , Akron , 13 , Warriors
34 , PF , Giannis, 08/26/89 , Athens , 8 , Bucks
我的目标是能够按位置对行进行分组,其中关键是不同的位置,并且值是一个球员信息列表,这些球员信息具有共同的相同位置,如下图所示:
{
"SF": [{..player1..}, {..player2..}],
"PF": [{..player1..}, {..player2..}],
"SG": [{..player1..}, {..player2..}],
"PG": [{..player1..}, {..player2..}],
}
这是我目前掌握的情况:
positions = {}
def players_position():
with open(filename, 'r') as file_obj:
dict_reader = DictReader(file_obj, delimiter=",")
for row in dict_reader:
positions[row["position"]] = row
return positions
print(players_position())
与代码,因为它是,当前值将永远覆盖前一个。我不希望这样。我想有一个列表,我们可以不断追加球员信息,如上面显示。
2条答案
按热度按时间ct2axkht1#
试试这个
该函数检查
position
是否已经在positions
中。如果是,我们只需将当前row
添加到已经在该位置的玩家列表中。如果不是,我们创建一个包含当前row
的新列表并将其分配给positions[position]
。请注意,这是基于你的答案。
nlejzf6q2#
开始了。我最初试图根据你所拥有的来做这个,但是因为在CSV原始数据中分割的数据最终会有一堆空白填充,所以我做了一些额外的工作来清理键/值。