はじめに
Python では、与えられた関数に基づいてリストの要素をグループ化することができます。これは、単語のリストを長さで、または数値のリストを偶数/奇数でグループ化したい場合など、多くのシチュエーションで役立ちます。このチャレンジでは、与えられた関数に基づいてリストの要素をグループ化する関数を書くよう求められます。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
Python では、与えられた関数に基づいてリストの要素をグループ化することができます。これは、単語のリストを長さで、または数値のリストを偶数/奇数でグループ化したい場合など、多くのシチュエーションで役立ちます。このチャレンジでは、与えられた関数に基づいてリストの要素をグループ化する関数を書くよう求められます。
引数としてリスト lst
と関数 fn
を受け取り、fn
を lst
の要素に適用した結果をキーとし、fn
をそれらに適用したときに対応するキーを生成する lst
の要素のリストを値とする辞書を返す関数 group_by(lst, fn)
を書きなさい。
たとえば、数値のリスト [6.1, 4.2, 6.3]
があり、それらを整数部分でグループ化したい場合、グループ化関数として math
モジュールの floor
関数を使用できます。期待される出力は {4: [4.2], 6: [6.1, 6.3]}
になります。
from collections import defaultdict
def group_by(lst, fn):
d = defaultdict(list)
for el in lst:
d[fn(el)].append(el)
return dict(d)
from math import floor
group_by([6.1, 4.2, 6.3], floor) ## {4: [4.2], 6: [6.1, 6.3]}
group_by(['one', 'two', 'three'], len) ## {3: ['one', 'two'], 5: ['three']}
このチャレンジでは、与えられた関数に基づいてリストの要素をグループ化する方法を学びました。また、辞書を使ってグループを格納し、それらを埋めるためのループを使ってこれを行う関数を書きました。これは、多くの異なるコンテキストで適用できる便利な技術です。