Pythonでチェーンメソッドを使用しているときに、この状況に遭遇しています。次のコードがあるとします
hash = {}
key = 'a'
val = 'A'
hash[key] = hash.get(key, []).append(val)
はhash.get(key, [])
[] を返し、辞書は になると予想していました{'a': ['A']}
。ただし、辞書は として設定されてい{'a': None}
ます。これをさらに調べたところ、これはpythonリストが原因で発生していることに気付きました。
list_variable = []
list_variable.append(val)
list_variable を次のよう['A']
に設定します ただし、初期宣言でリストを設定します
list_variable = [].append(val)
type(list_variable)
<type 'NoneType'>
list_variable に ['A'] を含める必要があるという私の理解と期待の何が問題になっていますか? ステートメントの動作が異なるのはなぜですか?