辞書を反復処理するときに、2 番目のコード ブロックよりも最初のコード ブロックを使用する利点はありますか?
for k, v in mydict.items():
if v == None:
mydict[k] = ''
と
for k in mydict.keys():
if mydict[k] == None:
mydict[k] = ''
辞書を反復処理するときに、2 番目のコード ブロックよりも最初のコード ブロックを使用する利点はありますか?
for k, v in mydict.items():
if v == None:
mydict[k] = ''
と
for k in mydict.keys():
if mydict[k] == None:
mydict[k] = ''
最初の方法は間違いなく明確で読みやすいので、後者よりも常にお勧めします。
とはいえ、このような単純なケースでは、より良いオプションは辞書内包表記です:
{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()