使用哪个python数据结构

时间:2017-05-26 12:39:26

标签: python database postgresql relational-database

所以我在MATLAB中有一个庞大的结构,包含英国超级联赛中的每一位球员(其中有688人)。在单个玩家的部分内部,有更多的阵列包含赛季中每场比赛的各种统计数据(铲球,十字架,进球等)。

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

您将使用哪种数据结构来存储此数据?我一直在阅读有关关系数据库的内容,并认为我应该开始学习PostgreSQL ..我只是想问一下你会用什么?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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