2017-01-28 9 views
0

私は本当に専門家の意見を求めています。私は、ネットワーク上のすべてのデバイスを発見し、それらのmgmt IPとインタフェース名とIPを保存して、それらを呼び出すことができます。ネットワークデバイスプロパティのための最高のpythonデータ構造

質問は私が持っている最も効率的な構造の情報を格納することです。辞書の辞表は最善の方法ですか?

だから、私の計画は次のように辞書を持っていることです。私は他の人がpythonでそれを処理する方法を、このようにそれをやってに何か問題がありますかわからないものの

devices = {'dev1': {'mgmt_v4': '192.168.0.1', 
        'mgmt_v6': '192::1', 
        'interfaces': {'g0/0_v4': '10.10.10.1', 
            'g0/0_v6': '10::1', 
            'g0/1_v4': '20.20.20.2', 
            'g0/1_v6': '20::2'}}} 

ありがとうございます。

+0

効率のあなたの定義は何であるとしてそれらを保存しますか?最低限のメモリが使用されますか? – BlackBear

+0

プログラム内でのアクセシビリティと使いやすさのような効率 – Kneelo

答えて

0

ディクテーションは非常に柔軟なツールであり、高速プロトタイプ作成に適しています。しかし、あまりにも柔軟性があります。キー値を誤って入力するのは簡単ですし、キーの名前を正確に把握することができません。

Dictsは、それらを表現する自然な方法です

  • デバイス名、デバイスのプロパティへのマッピング
  • インタフェース名のIPアドレスへのマッピング:あなたの構造では、キーは任意となります二つの場所を持っています。しかし、デバイスのプロパティは固定キーセット(mgmt_v4,mvmt_v6interfaces)です。それはtheeseフィールドを持つクラスを嫌う方が良いです。

    class DeviceProperties(object): 
        def __init__(self, mgmt_v4, mgmt_v6, interfaces): 
         self.mgmt_v4 = mgmt_v4 
         self.mgmt_v6 = mgmt_v6 
         self.interfaces = interfaces 
    

    次に、あなたは

    { 
    "dev1" : DeviceProperties(
        '192.168.0.1', 
        '192::1', 
        { 
         'g0/0_v4': '10.10.10.1', 
         'g0/0_v6': '10::1', 
         'g0/1_v4': '20.20.20.2', 
         'g0/1_v6': '20::2' 
        }) 
    } 
    
+0

Alexey氏に感謝します。それはそれを処理するより良い方法かもしれません。確かめます。 – Kneelo

関連する問題