TL;DR どれが一番いいですか?
1.- [r.update(r.pop('some_key')) for r in res if r.get('some_key')]
2.- map(lambda r: r.update(r.pop('some_key') if r.get('some_key') else []), res)
3.- map(lambda r: r.update(r.pop('some_key')), filter(lambda r: r.get('some_key'), res))
4.- for r in res:
if r.get('some_key'):
for element in r['some_key']:
r[element] = r['some_key'][element]
del r['some_key']
5.- Insert your own approach here
注: これは製品コードではありません。テスト スイートで実行されるコードなので、パフォーマンスよりも読みやすさ/保守性に関心があります。それにもかかわらず、これが製品コードである場合、(パフォーマンス/読みやすさのトレードオフを考慮して) どちらが優れているかに関する決定が変わるかどうかも知りたいです。これが違いを生む場合、「some_key」の要素の数は非常に少ないです。
コンテキスト: Python List Comprehension Vsを読みました。受け入れられた答えが言うところに地図:
[...] 他のケースではリスト内包表記の方が高速である可能性があり、ほとんどの (すべてではない) pythonistas はそれらをより直接的で明確であると考えています[...]。
それにもかかわらず、受け入れられた答えIs it Pythonic to use list comprehensions for just side effects? 言います:
そうすることは非常に反 Python 的です[副作用のためだけに内包リストを使用し、戻り値を無視します]。中間リストは作成後に破棄され、非常に大きくなる可能性があるため、作成にコストがかかります。
PS: どちらが最適かについては既に意見がありますが、私の同僚の 1 人は反対しています。これが私が尋ねている理由です。