2017-12-07 10 views
0

名前付きタプルオブジェクトが63個の異なる項目で定義されています。私は_make関数を使用します。私はこのアプローチがうまくいくと思うが、try except文のために4x63個以上の行が必要です。もっと良い方法がなければならない:デフォルトの値を持つ名前付きタプルを作成するための巨大なリストを作成する方法

AssetRow = collections.namedtuple('AssetRow', [ 
    "status", 
    "computer_name", 
    . 
    . 
    . 
    61 more 


def create_asset_row(Object): 
    try: 
     Object.status 
    except 
     Object.status = "" 
    try: 
     Object.computer_name 
    except 
     Object.computer_name= "" 
    values = [ 
     Object.status, 
     Object.computer_name, 
     . 
     . 
     . 
     61 more 
    ] 
    row = AssetRow._make(values) 

は基本的に私はそれに置くために価値を持っていない場合は名前のタプルが「」に設定されていることを確認したい....が、私にはありませんそれを行う500行を書きたいと思って...私は約67行を書くしたい

答えて

1

この作品のようなもの?私はnamedtupleクラスに慣れていません。

names = ["status", "computer_name"] 
AssetRow = collections.namedtuple('AssetRow', names) 


def create_asset_row(Object): 
    values = [getattr(Object, name, "") for name in names] 
    row = AssetRow._make(values) 
+1

私は、デフォルトの引数 'getattr'を使うことをお勧めします:' getattr(Object、name、 "") '。必要に応じて '' ''を 'name'固有のデフォルトに置き換えてください。これはOPのコードに近いためです。 –

+0

ありがとう、私もその考えを持っていただろうが、それを置くのを忘れてしまった – bphi