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

Sortedの使い方

会社でSortedの使い方を教えてもらったのでサンプル書いてみた。
keyでどの要素でソートしたいかを指定できるのが大事です。

# -*- coding:utf-8 -*-
import random
import time

class Data():
    """
    Sort用のデータを入れる
    """
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z

def show_list(sorted_list):
    print "#" * 22

    # ソートされたリストを表示する
    count = 0
    for data in sorted_list:
        print "[%2d] = (%2d, %4d, %3d)" % (count, data.x, data.y, data.z)
        count+=1

def main():
    random.seed(time.localtime())
    data_list = []

    # create data
    for x in xrange(0, 100):
        d = Data(x, random.randint(1, 1000), random.randint(1, 500))
        # print
        print "[%2d] = (%2d, %4d, %3d)" % (x, d.x, d.y, d.z)
        data_list.append(d)

    # Data.y で sort
    sorted_list = sorted(data_list,key=lambda x : x.y)

    # ソートされたリストを表示する
    show_list(sorted_list)

    # Data.z で sort
    sorted_list = sorted(data_list,key=lambda x : x.z)
    show_list(sorted_list)

if __name__ == '__main__':
    main()