1: 2019-04-23 (火) 19:18:56 njf |
現: 2019-04-23 (火) 20:44:20 njf |
| | | |
| original_list = [2,1,4,3,5] | | original_list = [2,1,4,3,5] |
| + | |
| original_list.sort() | | original_list.sort() |
| + | |
| print(original_list) | | print(original_list) |
| | | |
| | | |
| original_list = [2,1,4,3,5] | | original_list = [2,1,4,3,5] |
| + | |
| sorted_list = sorted(original_list) | | sorted_list = sorted(original_list) |
| + | |
| print(original_list) | | print(original_list) |
| print(sorted_list) | | print(sorted_list) |
| | | |
| original_list = [2,1,4,3,5] | | original_list = [2,1,4,3,5] |
| + | |
| original_list.sort(reverse = True) | | original_list.sort(reverse = True) |
| + | |
| print(original_list) | | print(original_list) |
| | | |
| | | |
| original_list = [2,1,4,3,5] | | original_list = [2,1,4,3,5] |
| + | |
| sorted_list = sorted(original_list, reverse = True) | | sorted_list = sorted(original_list, reverse = True) |
| + | |
| print(original_list) | | print(original_list) |
| print(sorted_list) | | print(sorted_list) |
| | | |
| original_dict = {2:"B",4:"D",1:"A",3:"C"} | | original_dict = {2:"B",4:"D",1:"A",3:"C"} |
| + | |
| sorted_dict_key = sorted(original_dict) | | sorted_dict_key = sorted(original_dict) |
| + | |
| print(original_dict) | | print(original_dict) |
| print(sorted_dict_key) | | print(sorted_dict_key) |
| | | |
| sorted_dict_list = sorted(original_dict.items()) | | sorted_dict_list = sorted(original_dict.items()) |
| + | |
| print(sorted_dict_list) | | print(sorted_dict_list) |
| | | |
| なぜなら、もとの辞書型オブジェクトの中と並べ替えたリストの中に同じ値が含まれており、データが二重化してしまうからです。 | | なぜなら、もとの辞書型オブジェクトの中と並べ替えたリストの中に同じ値が含まれており、データが二重化してしまうからです。 |
| | | |
- | この方法では、メモリを無駄に消費するのはもちろん、ソートしてからキーに対応した値を変更しようとすると、並び替えたリスト(sorted_dict_list)と、もとの辞書型オブジェクト(original_dict)の値の両方を変更する必要が出てきます。 | + | この方法では、メモリを無駄に消費するのはもちろん、ソートしてからキーに対応した値を変更しようとすると、プログラムの目的によっては、値の整合性をとるために並び替えたリスト(sorted_dict_list)と、もとの辞書型オブジェクト(original_dict)の値の両方を変更しなければならなくなります。 |
| | | |
| しかもリストの方は中がタプルのため値が変更できません。 | | しかもリストの方は中がタプルのため値が変更できません。 |
| 並べ替えたキーだけ保持する方法なら、もとの辞書型オブジェクトを変更するだけで良く、そのような処理は必要ありません。 | | 並べ替えたキーだけ保持する方法なら、もとの辞書型オブジェクトを変更するだけで良く、そのような処理は必要ありません。 |
| | | |
- | ただし、キーではなく対応する値の方で並べ替えるなら一度リスト化する必要があります。 | + | ちなみに、一度リスト化して並べ替える方法がGoogle検索の上位に現れるのは日本語のサイトの検索結果です。英語のサイトの検索結果の上位サイトだとわざわざそんなことはしていません(2019年4月)。日本ローカルの謎の処理のようです。 |
| | | |
| *並び替えに細かな条件を指定する [#a928baaf] | | *並び替えに細かな条件を指定する [#a928baaf] |
| | | |
| original_list = ["Ab32","ab21","aB13"] | | original_list = ["Ab32","ab21","aB13"] |
| + | |
| sorted_list = sorted(original_list) | | sorted_list = sorted(original_list) |
| + | |
| print(sorted_list) | | print(sorted_list) |
| | | |
| | | |
| sorted_list = sorted(original_list,key=str.lower) | | sorted_list = sorted(original_list,key=str.lower) |
| + | |
| print(sorted_list) | | print(sorted_list) |
| | | |
| | | |
| sorted_list = sorted(original_list,key=lambda x: x[3]) | | sorted_list = sorted(original_list,key=lambda x: x[3]) |
| + | |
| print(sorted_list) | | print(sorted_list) |
| | | |
| 結果 | | 結果 |
| | | |
- | ['ab21', 'Ab32', 'aB13'] | + | ['ab21', 'Ab32', 'aB13'] |
| | | |
| ここではラムダ式を使いましたが、「何番目の要素で並び替える」という処理はよく使うので、Pythonにはそれに対応した「itemgetter」というメソッドが用意されています。 | | ここではラムダ式を使いましたが、「何番目の要素で並び替える」という処理はよく使うので、Pythonにはそれに対応した「itemgetter」というメソッドが用意されています。 |
| | | |
| from operator import itemgetter | | from operator import itemgetter |
| + | |
| sorted_list = sorted(original_list,key=itemgetter(3)) | | sorted_list = sorted(original_list,key=itemgetter(3)) |
| + | |
| print(sorted_list) | | print(sorted_list) |
| | | |
| | | |
| sorted_list = sorted(original_list,key=itemgetter(0,3)) | | sorted_list = sorted(original_list,key=itemgetter(0,3)) |
| + | |
| print(sorted_list) | | print(sorted_list) |
| | | |
| | | |
| from operator import attrgetter | | from operator import attrgetter |
| + | |
| 略 | | 略 |
| + | |
| sorted_list = sorted(original_list, key=attrgetter('name')) | | sorted_list = sorted(original_list, key=attrgetter('name')) |