2014/4/27

Python對dictionary資料結構進行排序

在Python 中可以針對 dict 資料結構進行排序,最簡單的做法是使用 lambda

因為在 VBA 中沒有這種類似的用法,所以特別紀錄如下

在 sorted 函數中,key = 你要排序的欄位

如果用 t:t[0] 這樣的表示法表示是針對 dict 中的key 進行排序

如果用 t:t[1] 這樣的表示法表示是針對 dict 中的value 進行排序

這似乎是 lambda 最為常見的使用方式…

而為什麼要這樣做呢? 其實最重要的原因是偷懶…因為其實也可以另外寫成函數另外呼叫,不過如果是排序這種這樣直覺的東西都還要另外寫個函數,實在是太麻煩了…

資料來源參考:http://stackoverflow.com/questions/9001509/python-dictionary-sort-by-key

This question has already been answered, but because it's popular on Google, here's what Python's documentation uses:

>>> from collections import OrderedDict

>>> # regular unsorted dictionary
>>> d = {'
banana': 3, 'apple':4, 'pear': 1, 'orange': 2}

>>> # dictionary sorted by key -- OrderedDict(sorted(d.items()) also works
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('
apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])

>>> # dictionary sorted by value
>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
OrderedDict([('
pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])

>>> # dictionary sorted by length of the key string
>>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
OrderedDict([('
pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])


沒有留言:

張貼留言