データストア、ListProperty、ソート

ListPropertyで持っている値でソートした結果をメモしておく。

テストに使用したクラス「Sksk(サクサク)」

from google.appengine.ext import db

class Sksk(db.Model):
    stlist = db.StringListProperty()

# テストデータ
# Sksk(key_id=1L, stlist=[])
# Sksk(key_id=2L, stlist=[u'0', u'1'])
# Sksk(key_id=3L, stlist=[u'0', u'1', u'2'])
# Sksk(key_id=4L, stlist=[u' a b c', u'0'])
# Sksk(key_id=5L, stlist=[u'c'])
# Sksk(key_id=6L, stlist=[u'a', u'a'])
# Sksk(key_id=7L, stlist=[u'2', u'5'])
# Sksk(key_id=8L, stlist=[u'aa'])
# Sksk(key_id=9L, stlist=[u' '])
# Sksk(key_id=10L, stlist=[u'aab'])
# Sksk(key_id=11L, stlist=[u'a', u'b', u'c'])

# テスト、昇順
sk = Sksk.all().order('stlist')

# 結果
# Sksk(key_id=9L, stlist=[u' '])
# Sksk(key_id=4L, stlist=[u' a b c', u'0'])
# Sksk(key_id=2L, stlist=[u'0', u'1'])
# Sksk(key_id=3L, stlist=[u'0', u'1', u'2'])
# Sksk(key_id=7L, stlist=[u'2', u'5'])
# Sksk(key_id=6L, stlist=[u'a', u'a'])
# Sksk(key_id=11L, stlist=[u'a', u'b', u'c'])
# Sksk(key_id=8L, stlist=[u'aa'])
# Sksk(key_id=10L, stlist=[u'aab'])
# Sksk(key_id=5L, stlist=[u'c'])

# テスト、降順
sk = Sksk.all().order('-stlist')

# 結果
# Sksk(key_id=5L, stlist=[u'c'])
# Sksk(key_id=10L, stlist=[u'aab'])
# Sksk(key_id=8L, stlist=[u'aa'])
# Sksk(key_id=11L, stlist=[u'a', u'b', u'c'])
# Sksk(key_id=6L, stlist=[u'a', u'a'])
# Sksk(key_id=7L, stlist=[u'2', u'5'])
# Sksk(key_id=3L, stlist=[u'0', u'1', u'2'])
# Sksk(key_id=2L, stlist=[u'0', u'1'])
# Sksk(key_id=4L, stlist=[u' a b c', u'0'])
# Sksk(key_id=9L, stlist=[u' '])

気付いた点

  • そもそも、空要素は比較する要素がないので除外される。
  • 0番目の要素を比較、1番目の要素を比較、2番目の要素を比較、、、という具合にソートされている。