0

深さが可変でキーが異なる辞書のリストがあります。

例えば:

a = [{attr1: 1,
     attr2: {secondary_attr1: 'sometext',
             secondary_attr2: 'sometext',
             complex_attr: {more_attr: 999}}},
     {attr1: 2}]

リストの各要素から必要なすべての情報を収集するためにクラスを使用していますが、もちろん、その特定の辞書にないキーから項目を取得しようとすると、KeyError が発生します。

リストaの各要素のインスタンスを作成する方法は次のとおりです。

InsertLine(i['attr1'],i['attr2']['secondary_attr1'])

単純な関数を定義しようとしましたが、うまくいきません:

def handle_keyerror(try_key):
    try:
        try_key
        return try_key
    except KeyError: 
        return 'NULL' 

問題が明確になったことを願っています。

4

1 に答える 1

1

関数は常にtry_keyを返すため、機能しません。これを試して。

def handle_keyerror(try_key):
    try:
        your_dictionary[try_key]
    except KeyError: 
        return None
    return try_key

とにかく、そのようにチェックするのは悪い考えです。

むしろ使用する必要がありますdict.get(key, default=None)。dictにキーがない場合は、keyデフォルト値を返します。

于 2013-02-08T12:04:18.317 に答える