2017-05-26 100 views
1

所以我在MATLAB中有一个庞大的结构,其中包含英国首屈一指的每个玩家(其中688个)。在单个球员的区域内,有更多阵列包含本赛季每场比赛的各种统计数据(铲球,十字架,球门等)。要使用哪种python数据结构

所以为了澄清,我有一个688长度的结构,包含大约40个元素。每个元素是一个包含38个条目的数组。

你会用什么数据结构来存储这些数据?我一直在阅读关于关系数据库,并认为我应该开始学习PostgreSQL ..我只想问在这里你会用什么?

回答

1

你绝对可以使用SQL数据库,但是如果你想坚持使用严格的python,你可以利用Python的面向对象的编程风格。 我会定义一个对象类像这样:

class Player: 
    def __init__(self, optional_paramater1, opt_param2): 
     #Stuff you want to happen when object is initialized 

    def read_in_matlab_structure(self, matlab_info_as_text): 
     self.tackles = #Wheverever you get this info from 
     self.crosses = #... 
     self.goals = #... 

然后,当你的对象,你可以访问每个值下方的自定义的名称。

players = [] #This would be a list. Depending on your use, you could also 
      #Use a dictionary that links name to the object 
      #That way you can call up a person by name. 
      #eg. players["Babe Ruth"] 
      #There are also sets in Python that might be applicable to 
      #Your situation. 
for entry in matlab_structure: 
    temp_player = Player(name) 
    temp_player.read_in_matlab_structure(entry) 
    players.append(temp_player) 
#then, when you want to access player information, 
# lets say you want to see all the players who had more than 8 goals in a season: 
for person in players: 
    if person.goals >= 8: 
     print(person.name) 

希望这会给你一个想法。 Python的数据结构的更多信息:

Python 3 Data Structures

+0

太神奇了!谢谢,这是完美的 –

1

就内置的数据结构而言,dictionary听起来像是您最好的选择。 如果有必要,您可以用json module将其导出。

对于外部数据库,SQLite可能是您的最佳选择。它需要比其他SQL数据库少很多的设置。正如你可以创建一个.db文件并开始发送数据给它,而不需要任何管理工作。