Sam*_*nga 4 python sorting lambda
我有以下列表:
list = [{'nr' : 2, 'name': 'streamname'}, {'nr' : 3,'name': 'streamname'}, {'nr' : 1, 'name': 'streamname'}]
Run Code Online (Sandbox Code Playgroud)
那么我如何在python中以高效的方式重新排序呢?
list = [{'nr' : 1, 'name': 'streamname'}, {'nr' : 2,'name': 'streamname'}, {'nr' : 3, 'name': 'streamname'}]
Run Code Online (Sandbox Code Playgroud)
我想出了使用sort并创建一个lambda函数来对它进行排序.这是一个好方法吗?它有效吗?
list.sort(cmp=lambda x,y: cmp(x['nr'], y['nr']))
Run Code Online (Sandbox Code Playgroud)
Len*_*bro 12
不,使用cmp=效率不高.请key=改用.像这样:
sorted(list, key=lambda x: x['nr'])
Run Code Online (Sandbox Code Playgroud)
原因很简单:cmp比较两个对象.如果列表很长,则可以对两个对象进行多种组合比较,因此列出两倍长度的列表需要两倍多的排序时间.
但key事实并非如此,因此排序长列表要快得多.
但使用的主要原因key,而不是cmp是,它更容易使用.
此外,sorted()有一个好处.sort(),它可以采取任何迭代,而.sort()inly适用于列表.
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |