在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)])
沒有留言:
張貼留言