関数による要素のグループ化

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Python では、与えられた関数に基づいてリストの要素をグループ化できます。これは、各グループの出現回数を数えたい場合に便利です。このチャレンジでは、与えられた関数に基づいてリストの要素をグループ化し、各グループの要素数を返す関数を作成することが求められます。

グループ化された要素のカウント

引数としてリスト lst と関数 fn を受け取る関数 count_by(lst, fn = lambda x: x) を書きます。この関数は、与えられた関数に基づいてリストの要素をグループ化し、各グループの要素数を含む辞書を返す必要があります。

この問題を解決するには、次の手順を辿ることができます。

  1. collections.defaultdict を使用して辞書を初期化します。
  2. map() を使用して与えられた関数をリストの各要素に適用します。
  3. マッピングされた値を反復処理し、辞書内の各要素のカウントを増やします。

関数は結果の辞書を返す必要があります。

from collections import defaultdict

def count_by(lst, fn = lambda x: x):
  count = defaultdict(int)
  for val in map(fn, lst):
    count[val] += 1
  return dict(count)
from math import floor

count_by([6.1, 4.2, 6.3], floor) ## {6: 2, 4: 1}
count_by(['one', 'two', 'three'], len) ## {3: 2, 5: 1}

まとめ

このチャレンジでは、与えられた関数に基づいてリストの要素をグループ化し、各グループの要素数を返す方法を学びました。また、この問題を解決するために collections.defaultdictmap() をどのように使用するかも学びました。