この記事は最終更新日から1年以上が経過しています。
はじめに
先輩にPythonには標準でグルーピングできる関数groupbyがあることを教えていただきました。
かっこよかったので紹介します。
環境
- Python 3.6.3
使い方
以下のように使います。
groupby(iterableオブジェクト(リストなど), key=グルーピングしたいキー) |
戻り値はキーの値と同じキーの要素グループのイテレータになります。
関数に渡すiterableオブジェクトは、グルーピングしたいキーでソート済みである必要があります。
説明がなかなか難しいので、以下に使い方例のサンプルコードを記載します。
使い方の例
from itertools import groupby # チーム番号が割り振られたメンバーリスト # {'team': チーム番号, 'name': 名前} members = [{'team': 1, 'name': 'A'}, {'team': 3, 'name': 'B'}, {'team': 2, 'name': 'C'}, {'team': 1, 'name': 'D'}, {'team': 2, 'name': 'E'}] # groupbyを使うには、まずはグルーピングしたいキーでソートする必要がある members.sort(key=lambda m: m['team']) # チーム番号でグルーピング for key, group in groupby(members, key=lambda m: m['team']): print("key:", key) # キーとして指定したチーム番号を出力 for member in group: print(member) # 同じキー(チーム番号)のメンバーを出力 |
実行してみます。
$ python3 groupby.py key: 1 {'team': 1, 'name': 'A'} {'team': 1, 'name': 'D'} key: 2 {'team': 2, 'name': 'C'} {'team': 2, 'name': 'E'} key: 3 {'team': 3, 'name': 'B'} |
まとめ
わざわざロジックを考えなくてもグルーピングすることができました。
この記事を書いた人
- 2017年入社の新卒です。
最近書いた記事
- 2019.10.11Pythonのアンパックとタプル
- 2019.01.22JavaScript側でsubmitができない
- 2018.12.13「AWS Toolkit for PyCharm について」~ RecoChoku Tech Night #09 4社合同 AWS re:Invent参加レポート で登壇しました ~
- 2018.12.02シリコンバレー1日ツアーに参加してきました(前半)