3

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

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

我想到了一个元组字典,但它并不能很好地工作,特别是在轻松绘制值时。

有任何想法吗?


一个例子就是这样。假设我有 3 个球,质量分别为 5、10 和 15 公斤。我以不同的速度投掷每个球,例如 1m/s、2m/s、3m/s、4m/s 和 5m/s。我测量每个球的高度和每个速度。所以每个速度点都耦合到相应的高度。

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

球_5公斤:

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

球_10kg

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

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

4

4 回答 4

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)))
]
于 2012-11-11T21:58:58.377 回答
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'
于 2012-11-11T14:10:41.880 回答
0

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

于 2012-11-10T17:23:02.877 回答
-2

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

于 2012-11-10T17:05:46.037 回答