【问题标题】:Which python datastructure to use使用哪种python数据结构
【发布时间】:2017-10-27 08:46:10
【问题描述】:

所以我在 MATLAB 中有一个巨大的结构,其中包含英超联赛中的每一位球员(其中 688 名)。在关于单人球员的部分中,有更多数组包含本赛季每场比赛的各种统计数据(抢断、传中、进球等)。

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

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

【问题讨论】:

    标签: python database postgresql relational-database


    【解决方案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

    【讨论】:

    • 太棒了!谢谢,这是完美的
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 2013-07-14
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多