今日は辞書を平らにする必要がありました。私が欲しかった意味:
{'_id': 0, 'sub': {'a': 1, 'b':2}}
になる:
{'_id': 0, 'a':1, 'b':2}
だから私は賢くて次のワンライナーをやってのけることができると思いました。
一発ギャグ:
x = dict(_id=0, sub=dict(a=1, b=2))
y = x.pop('sub').update(x) # incorrect result
これにより、がy = None
。
だから私は明らかに頼りにしました:
マルチステップ:
x = dict(_id=0, sub=dict(a=1, b=2))
y = x.pop('sub')
y.update(x) # correct result
「表現力豊かなコーディング慣行」を少し脇に置いて、上記のワンライナーアプローチがなぜ得られるのかを理解したいと思いますNone
。x.pop('sub')を使用すると、スタックのどこかに一時的なdictが生成され、元のxdictがすぐに更新されると思いました。次に、スタックオブジェクトは、更新であるチェーン内の次のメソッドを受け取ります。これは明らかにそうではないようです。
コミュニティの理解を深めるために(そして明らかに私のものです)-Pythonはどのようにしてワンライナーを解決し、結果はなしになりますか?