2016-07-24 7 views
0

私はしばらくPythonの基礎を研究し、データ解析のためにmysqlに戻りました。今、私はOOPをPythonのやり方で学びたいと思っていますが、クラス、オブジェクト、およびその属性に関するすべての情報を読んでいます。私は実験の途中で道に迷って方向を探しています。データのOOPワークフロー

私はPythonモジュールciscoconfparseを使用し、すべてのインターフェイスを読み込み、スプレッドシートを経由して各インターフェイスをフィルタリングし、必要なデータ(サプライヤ)を取得します。

dict = {  
    'Customer'  : 'customer1', 
    'supplier-con' : 'id823985', 
    'hostname'  : 'router01', 
    'interface'  : 'gig0/1', 
    'subinterface' : '101', 
    'dot1q'   : '111', 
    'qinq'   : '10101' 
} 

ツリーワイズ関係表示する:
       キーは以下の値なしの例のようになります。

Customer 1 : customer1 
----supplier-con : id823985 
-------hostname : router 1 
----------interface : gi0/1 
--------------subinterface : 101 
--------------subinterface : 111 

Customer 1 : customer1 
----supplier-con : id45223 
-------hostname : router 5 
----------interface : gi0/3 
--------------subinterface : 107 
--------------subinterface : 888 

Customer 2 : customer2 
----supplier-con : id625544 
-------hostname : router 2 
----------interface : gi0/2 
--------------subinterface : 202 
--------------subinterface : 222 
を私は次のようなデータを持つことができる例として

インターフェイスが複数のサブインターフェイスで複数回使用されていることがわかります。 これはまた、ホスト名をカウントし、途中の他の詳細のためになる可能性があります。

メモリ内の50000エントリを処理するにはどのような方法が考えられますか?あるいは、私はデータベースの方がいいですか?

私はdict-in-dictsを作成する方法を知っていますが、実際のオブジェクトを使って互いの関係を作成する方法は分かりません。

+1

質問に[私の答えは(_stackoverflow.com/a/15420716/355230)[_は4つ以上の値のセットを格納するための最良のデータ構造ですか?_](http: //stackoverflow.com/questions/15418386/what-is-the-best-data-structure-for-storing-a-set-of-four-or-more-values)それぞれのユニークな値ごとにルックアップテーブルを作成するデータベース内のフィールド(必要な場合および必要な場合) – martineau

+1

また、鍵は、あなたが言及したdict-in-dictsのようなコンテナである値にlist-in-dictsとして関連付けることができることに注意してください。例えば、キー 'サブインタフェース'の値はa '['101'、 '111']'のような項目のリスト、あるいは辞書のリストさえあれば、それらの辞書はデータ構造内の他の要素になります。 Pythonでは参照カウントが行われるため、辞書のデータは参照されるたびに倍になりません。 – martineau

+0

Martineauありがとうございました。これらは私が仕事をすることができる非常に良い答えです。特によく書かれたCSVの例です。それは私が試してみたいことです。 – Gaston

答えて

1

オブジェクト指向は、データを操作するデータと関数のバンドル(またはオブジェクトが理解するメッセージ)に関するオブジェクトです。プレーンなデータ構造から始めて分割するのではなく、あなたのプログラムでどの操作をしたいのか考え始めるべきです。次に、これらを明確で分かりやすい責任を持ってエンティティに分類します。後であなたのオブジェクトになります。

最終的なデザインが、あなたが提示したデータグループに似ておらず、データ指向のアプローチと同じ流れが見えないこともあります。これがプロである場合、または詐欺が議論のために開いている場合。

+0

私はまずUMLでクラス関係を構築し始めました。 。次の簡単なフェーズでは、異なる辞書に保存するリレーションを作成する関数を実行する辞書のリストにすべての情報が残っている可能性があります。しかし、まだ私は
のような情報を得ることができるのかどうか疑問に思っています。print customer1.all-interfaces
dictsを実行することなく、純粋に関係を通してそれらを釣り上げてください...その部分で作業しました – Gaston

関連する問題