3

辞書を反復処理するときに、2 番目のコード ブロックよりも最初のコード ブロックを使用する利点はありますか?

for k, v in mydict.items():
    if v == None:
        mydict[k] = ''

for k in mydict.keys():
    if mydict[k] == None:
        mydict[k] = ''
4

1 に答える 1

9

最初の方法は間違いなく明確で読みやすいので、後者よりも常にお勧めします。

とはいえ、このような単純なケースでは、より良いオプションは辞書内包表記です:

{k: v if v is not None else "" for k, v in mydict.items()}

2 番目の例は単純化できることに注意してください。直接反復するmydictとキーが提供されるため、必要ありませんmydict.keys()(これは主に、反復ではなく別の目的でキーのセットが必要な場合に役立ちます)。

(jathanism がコメントで指摘しているように、古いバージョンの Python (2.x) では、使用はリストを生成しないためiteritems()よりも優れたオプションです。私のような 3.x ユーザーは、辞書ビューを生成するので心配する必要はありません。 、これは怠惰です。)items()items()

于 2012-12-20T00:05:11.670 に答える