3

私はデータ構造に非常に慣れていないので、ここ SO の経験豊富な責任者の意見を知りたいです。基本的にツリーのような階層的なデータがあります。以前は配列として保存された順序付けられたポイント (x、y) に保存していましたが、今ではこれを行うのがますます面倒になっています。

on と off の 2 つのプロパティがあるとします。プロパティごとに、5 つのデータ値を保存したいと考えています。しかし、これらのデータ値のそれぞれには、それと共に保存する必要がある対応するデータ値があります。これらも簡単にプロットできる必要があります。

タプルの辞書を考えましたが、特に値を簡単にプロットする場合は、あまりうまく機能しません。

何か案は?


例はこれです。質量が 5、10、15kg の 3 つのボールがあるとします。1m/s、2m/s、3m/s、4m/s、5m/s などの速度範囲で各ボールを投げます。各ボールの高さと各速度を測定します。したがって、各速度ポイントは対応する高さに結合されます。

私はこれを別の配列に格納していましたが、次のように言います。

ボール_5kg:

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

こんなことをしたいですか?

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 に答える
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))
}

1 つのコンテナー内のオブジェクトの例:

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 に答える
-2

pickle とカスタマイズされたクラスを使用できるかもしれません。クラスで独自のセッターとゲッターを作成できます。

于 2012-11-10T17:05:46.037 に答える