用于此数据的数据结构是什么?

时间:2012-11-10 16:36:47

标签: python class design-patterns data-structures

我对数据结构非常陌生,我真的很想知道SO经验丰富的负责人的观点。我有一些层次结构的数据,基本上就像一棵树。我曾经将它存储在存储为数组的有序点(x,y)中,但现在这样做变得越来越麻烦。

假设我有两个属性,开启和关闭。对于每个属性,我想存储5个数据值。但是每个数据值都有一个相应的数据值,需要与之一起存储。我也需要能够轻松地绘制这些图。

我想到了一个元组字典,但它并没有真正起作用,特别是在轻松绘制值时。

有什么想法吗?


这是一个例子。假设我有3个球,质量分别为5,10和15kg。我把每个球都以一定的速度投掷,比如1m / s,2m / s,3m / s,4m / s和5m / s。我测量每个球和每个速度的高度。因此每个速度点都耦合到相应的高度。

我曾经将它存储在不同的数组中,比如说:

ball_5kg:

v5=[1,2,3,4,5]
h5=[h1,h2,h3,h4,h5]

ball_10kg

v10=[1,2,3,4,5]
h10=[h1,h2,h3,h4,h5]

但我不认为这是否真的很理想,或者是存储这些数据的最佳方式,特别是当球体数量和速度变得非常大时。有没有更好的方法来存储它?

4 个答案:

答案 0 :(得分:1)

你想做的是这样吗?

data = [
  { # OFF
    'val0': 'data0',
    'val1': 'data1',
    'val2': 'data2',
    'val3': 'data3',
    'val4': 'data4',
  },
  { # ON
    'val5': 'data5',
    'val6': 'data6',
    'val7': 'data7',
    'val8': 'data8',
    'val9': 'data9',
  }
]

data[0] # the `off` dict
data[1] # the `on` dict

list( data[0].keys() ) # ['val0', 'val1', 'val2', 'val3', 'val4']
list( data[1].keys() ) # ['val5', 'val6', 'val7', 'val8', 'val9']

data[0]['val0'] # 'data0'

答案 1 :(得分:1)

您的数据似乎是多维的,而不是分层的(即像矩阵而不是树一样),它可以使用嵌套容器或一个容器中的对象来表示。

嵌套容器的示例:

container = {
    "ball_5kg" : ((1, h1), (2, h2), (3, h3), (4, h4), (5, h4)),
    "ball_10kg" : ((1, h1), (2, h2), (3, h3), (4, h4), (5, h4))
}

一个容器中对象的示例:

class DataPair():
    __init__(self, velocity, height):
        self.velocity = velocity
        self.height = height
class DataSeries()
    __init__(self, name, series):
        self.name = name
        self.series = series
container = [
    DataSeries("ball_5kg", (DataPair(1, h1), DataPair(2, h2), DataPair(3, h3), DataPair(4, h4), DataPair(5, h4)))
    DataSeries("ball_10kg", (DataPair(1, h1), DataPair(2, h2), DataPair(3, h3), DataPair(4, h4), DataPair(5, h4)))
]

答案 2 :(得分:0)

我不理解您对数据的描述,但树很容易递归表示。象征性地,树:= [节点,[树]]。也就是说,树是一个列表,其第一个元素是根,第二个元素是树的列表,即根的子树(子)。或者,您可以编写Tree:= [Node,Tree_1,Tree_2,... Tree_N]。

答案 3 :(得分:-2)

也许你可以使用泡菜和自定义课程。你可以在课堂上写自己的setter和getter。