2

set / dict / list の順序付けられたペアと set / dict / list の値の合計を返すには、2 つのリスト内包表記が必要なのだろうかと思います。これが私が意味することの例です:

>>> l = ['abc', 'd', 'efgh', 'ij']
>>> {i: len(i) for i in l}, sum(len(i) for i in l)
({'efgh': 4, 'abc': 3, 'ij': 2, 'd': 1}, 10)

重複した内包表記よりも、これを書くためのより良い/よりpythonicな方法はありfor i in lますか?

アップデート:

私がこの質問をしたのは、特定のlambda. すなわち

>>> l = ['abc', 'd', 'efgh', 'ij']
>>> dict_value = lambda l: ({i: len(i) for i in l}, sum(len(i) for i in l))
>>> dict_value(l)
({'efgh': 4, 'abc': 3, 'ij': 2, 'd': 1}, 10)

私がこの質問をlen()したのは、必要な値を計算するために使用しているのではなく、高価な計算を使用しているためです。for ループに関する以下のポイントは、作業を行うラムダではなく 2 次メソッドを定義すると、問題を解決します。

4

2 に答える 2