読者です 読者をやめる 読者になる 読者になる

ようへいの日々精進XP

よかろうもん

ショロカレ 6 日目 | 初老と Python(1)〜 宝塚トップスターが記録された dict 型のデータを特定のキーでグルーピングする 〜

これは

初老丸アドベントカレンダー 6 日目の記事です。

qiita.com

ということで、小ネタ大ネタを交えて 12/25 まで張り切っていきましょう。

初老と Python

参考

困った、困った、こまどり姉妹

上司:あー、この 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
■ 宙組
朝夏 まなと
実咲 凜音
■ 星組
紅 ゆずる
綺咲 愛里
■ 月組
珠城 りょう
愛希 れいか
■ 花組
明日海 りお
花乃 まりあ
■ 雪組
早霧 せいな
咲妃 みゆ

上司:うむ。

以上

メモでした。