Pythonでソート(複数キーでdescとasc混在)
1キーずつ。ソート順位が低いほうから順に。
成果物
情報源
コード
要素がタプル型
import operator names=[(1,'A'),(2,'B'),(2,'A'),(1,'C')] print(names) names.sort(key=operator.itemgetter(1)) # 第2キー print(names) names.sort(key=operator.itemgetter(0), reverse=True) # 第1キー print(names)
>>> import operator >>> names=[(1,'A'),(2,'B'),(2,'A'),(1,'C')] >>> print(names) [(1, 'A'), (2, 'B'), (2, 'A'), (1, 'C')] >>> names.sort(key=operator.itemgetter(1)) # 第2キー >>> print(names) [(1, 'A'), (2, 'A'), (2, 'B'), (1, 'C')] >>> names.sort(key=operator.itemgetter(0), reverse=True) # 第1キー >>> print(names) [(2, 'A'), (2, 'B'), (1, 'A'), (1, 'C')]
ポイントはソートの優先順位が低い順にsort
すること。
要素がdict型
リスト要素がdict
型なら、operator.itemgetter('キー名')
のように指定することができる。
import operator players=[{'point': 0, 'name': 'A'},{'point': 5, 'name': 'B'},{'point': 5, 'name': 'A'},] print(players) players.sort(key=operator.itemgetter('name')) # 第2キー: name asc print(players) players.sort(key=operator.itemgetter('point'), reverse=True) # 第1キー: point desc print(players)
>>> import operator >>> players=[{'point': 0, 'name': 'A'},{'point': 5, 'name': 'B'},{'point': 5, 'name': 'A'},] >>> print(players) [{'point': 0, 'name': 'A'}, {'point': 5, 'name': 'B'}, {'point': 5, 'name': 'A'}] >>> players.sort(key=operator.itemgetter('name')) # 第2キー: name asc >>> print(players) [{'point': 0, 'name': 'A'}, {'point': 5, 'name': 'A'}, {'point': 5, 'name': 'B'}] >>> players.sort(key=operator.itemgetter('point'), reverse=True) # 第1キー: point desc >>> print(players) [{'point': 5, 'name': 'A'}, {'point': 5, 'name': 'B'}, {'point': 0, 'name': 'A'}]
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13 ※
- bash 4.4.12(1)-release ※
- SQLite 3.29.0 ※
- MeCab 0.996ユーザ辞書
- Python 3.5.3
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux