use*_*652 12 python sorting dictionary
d = { 'a':{'k':1, 'b':'whatever'}, 'b':{'k':2, 'b':'sort by k'} }
Run Code Online (Sandbox Code Playgroud)
想要在python中按k降序排序这个字典.
有点棘手,请帮忙.
unu*_*tbu 19
dict
s是无序的.所以没有办法直接对它们进行排序,但是如果你愿意将它们转换dict
为(key,value)-tuples的列表,那么你可以这样做:
In [9]: d
Out[9]: {'a': {'b': 'whatever', 'k': 1}, 'b': {'b': 'sort by k', 'k': 2}}
In [15]: sorted(d.items(),key=lambda x: x[1]['k'],reverse=True)
Out[15]: [('b', {'b': 'sort by k', 'k': 2}), ('a', {'b': 'whatever', 'k': 1})]
Run Code Online (Sandbox Code Playgroud)
这个优秀的迷你说明解释了key
参数的使用.
如果您使用 python 2.7 或更高版本,请使用OrderedDict。
有序字典就像普通字典一样,但它们记住插入项目的顺序。迭代有序字典时,项目将按照第一次添加它们的键的顺序返回。
从例子
>>> # regular unsorted dictionary
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
>>> # dictionary sorted by key
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
Run Code Online (Sandbox Code Playgroud)
要尝试为 python 2.4 或更低版本实现相同的效果,请参阅:
Py2.7 的新 collections.OrderedDict 的替代品,适用于 Python 2.4-2.6。
归档时间: |
|
查看次数: |
10208 次 |
最近记录: |