これは
初老丸アドベントカレンダー 6 日目の記事です。
qiita.com
ということで、小ネタ大ネタを交えて 12/25 まで張り切っていきましょう。
初老と Python
参考
- https://adiyatmubarak.wordpress.com/2015/10/05/group-list-of-dictionary-data-by-particular-key-in-python/
- https://docs.python.org/2/library/itertools.html#itertools.groupby
困った、困った、こまどり姉妹
上司:あー、この dict 型のデータを使って、「クラス」毎に「名前」を並べ替えてほしい
初老:あ、はい…
渡された、dict 型データは以下のようなデータ。
top_stars = [ {'名前': '明日海 りお', 'クラス': '花組'}, {'名前': '花乃 まりあ', 'クラス': '花組'}, {'名前': '珠城 りょう', 'クラス': '月組'}, {'名前': '愛希 れいか', 'クラス': '月組'}, {'名前': '早霧 せいな', 'クラス': '雪組'}, {'名前': '咲妃 みゆ', 'クラス': '雪組'}, {'名前': '紅 ゆずる', 'クラス': '星組'}, {'名前': '綺咲 愛里', 'クラス': '星組'}, {'名前': '朝夏 まなと', 'クラス': '宙組'}, {'名前': '実咲 凜音', 'クラス': '宙組'}, ]
どうやら、上司は宝塚のファンらしい。
kageki.hankyu.co.jp
※各スターのお名前は上記のサイトより拝借いたしました。この場を借りてお礼を申し上げます。
itertools.groupby
Python には標準で itertools.groupby というモジュールが提供されているので、これを使うことで瞬殺。
# -*- coding: utf-8 -*- import itertools from operator import itemgetter top_stars = [ {'名前': '明日海 りお', 'クラス': '花組'}, {'名前': '花乃 まりあ', 'クラス': '花組'}, {'名前': '珠城 りょう', 'クラス': '月組'}, {'名前': '愛希 れいか', 'クラス': '月組'}, {'名前': '早霧 せいな', 'クラス': '雪組'}, {'名前': '咲妃 みゆ', 'クラス': '雪組'}, {'名前': '紅 ゆずる', 'クラス': '星組'}, {'名前': '綺咲 愛里', 'クラス': '星組'}, {'名前': '朝夏 まなと', 'クラス': '宙組'}, {'名前': '実咲 凜音', 'クラス': '宙組'}, ] top_stars = sorted(top_stars, key=itemgetter('クラス')) for key, value in itertools.groupby(top_stars, key=itemgetter('クラス')): print '■ ' + key for i in value: print i.get('名前')
トップスター達を上司の報告
初老:上司さん、以下のような感じでいいすかねー。
$ python test.py ■ 宙組 朝夏 まなと 実咲 凜音 ■ 星組 紅 ゆずる 綺咲 愛里 ■ 月組 珠城 りょう 愛希 れいか ■ 花組 明日海 りお 花乃 まりあ ■ 雪組 早霧 せいな 咲妃 みゆ
上司:うむ。
以上
メモでした。
元記事はこちら
「ショロカレ 6 日目 | 初老と Python(1)〜 宝塚トップスターが記録された dict 型のデータを特定のキーでグルーピングする 〜」