0

このトリッキーなdict-function呼び出し(pythonicの「ケース」..)を「マップ」でサイクルで書き直すことは何とか可能ですか?

いくつかの Java 関数呼び出しがあります。最初に「if-elif」ステートメントを使用し、次に dict を使用することにしました。ご覧のとおり、例外なく dict を使用してみました。

「dict」呼び出しを列 iterator にマッピングして「for」サイクルを書き直したいと思います。出来ますか ?

type_resolver={'java.lang.String' : set.getString,
               'java.lang.Integer' : set.getInt, 
               #'java.lang.util.Date' : lambda x: None,#set.getTimestamp,
               'java.lang.Short' : set.getShort,
               #'java.util.Collection': lambda x: None,
               #'java.util.Date': lambda x: None,
               #'boolean': lambda x: None
}

while set.next():                     
    for column in COLUMNS:
        try:
            data=type_resolver[STRCT[column]](column)
        except KeyError:
            data=None
        DATAR[column].append(data)
4

1 に答える 1

0

getをチェックする代わりに使用すると、次のことがKeyError役立ちます。

for column in COLUMNS:
    DATAR[column].append(type_resol.get(STRCT[column], lambda x: None))(column))

1 行にすることもできますが、すでに長すぎる可能性があります。

[DATAR[column].append(type_resol.get(STRCT[column], lambda x: None))(column)) 
 for column in COLUMN]  

さらに、最後のバリエーションはリストがいっぱいなので捨てNoneます。これは誤解を招く可能性があります。とにかく2行必要です。したがって、最初のソリューションを使用してください。

于 2013-06-02T11:39:32.963 に答える