おっとその前に、まずはオブジェクトのリストではなく単純な文字列や数値のリストをソート・リバース・マージする方法から紹介しておこう。
# -*- coding: utf-8 -*-
# ソート
lst = ['apo', 'apa', 'baa']
lst.sort()
print lst
# リバース
lst = ['apo', 'apa', 'baa']
lst.reverse()
print lst
# マージ
from heapq import merge
lst1 = ['hoge', 'foo']
lst2 = ['baa', 'baz']
lst = list(merge(lst1, lst2))
print lst
これを実行するとこうなる。
['apa', 'apo', 'baa']
['baa', 'apa', 'apo']
['baa', 'baz', 'hoge', 'foo']
マージの時だけは from heapq import merge を使う必要がある。他の方法でもやれなくはないが、これを使うのが一番手っ取り早いしソースも綺麗だと思われる。
さて、いよいよオブジェクトのリストをソートまたはリバースする方法だ。ちょっとだけ敷居が上がるが、Python2.4以降だと import operator すれば非常に簡単に実現できる。
# -*- coding: utf-8 -*-
import operator
# 商品クラス
class Item:
def __init__(self, name, price):
self.name = name # 商品名
self.price = price # 価格
def __repr__(self):
return "Item(%s, %d)" % (self.name, self.price)
# まずは商品オブジェクトのリストを生成
lst = [Item('banana', 99),
Item('apple',60),
Item('kiwi',40)]
# 商品名でソート
lst.sort(key=operator.attrgetter('name'))
print lst
# 価格でソート
lst.sort(key=operator.attrgetter('price'))
print lst
# 価格でリバース
lst.sort(key=operator.attrgetter('price'), reverse=True)
print lst
# リストをマージ
from heapq import merge
lst2 = [Item('hoge', 11),
Item('foo',22)]
lst = list(merge(lst, lst2))
print lst
以下は実行結果だ。
[Item(apple, 60), Item(banana, 99), Item(kiwi, 40)]
[Item(kiwi, 40), Item(apple, 60), Item(banana, 99)]
[Item(banana, 99), Item(apple, 60), Item(kiwi, 40)]
[Item(banana, 99), Item(apple, 60), Item(kiwi, 40), Item(hoge, 11), Item(foo, 22)]
素晴らしくシンプルである。
ここはひとつポチっとよろしく。

エキスパートPythonプログラミング
posted with amazlet at 11.06.17
Tarek Ziade
アスキー・メディアワークス
売り上げランキング: 4805
アスキー・メディアワークス
売り上げランキング: 4805
プログラミング Google App Engine
posted with amazlet at 11.06.03
Dan Sanderson
オライリージャパン
売り上げランキング: 40082
オライリージャパン
売り上げランキング: 40082
【GAE for Pythonの最新記事】
- GAE/Pでmemcacheを利用してデ..
- PythonでJST日付をUTC(GMT..
- BeautifulSoupオブジェクトを..
- GAE/Pで詳細なエラーログ(トレース情..
- GAE/PでAspyctを使ってAOP(..
- GAE/Pでカスタムタグを作って日付をU..
- GAE/PでBeautifulSoupを..
- GAE/Pでログインが必要なページを取得..
- GAE/Pでファイルアップロード。
- GAE/Pでリクエストデータの扱い方。
- GAE/PでCRONを使ったスケジュール..
- GAE/PでModelをJSON変換する..
- GAE/P向け統合開発環境 Eclips..
- GAE/PとjQueryでJSONデータ..
- GAE+Pythonの標準モジュールだけ..
- GAE+Pythonでテンプレートの共通..
- GAEアプリをアップロードする方法。
- GAE+Pythonでテンプレートエンジ..
- GAE+Pythonでデータストアを操作..
- webappフレームワークを使ったフォー..