我有以下列表:
list = [{'nr' : 2, 'name': 'streamname'}, {'nr' : 3,'name': 'streamname'}, {'nr' : 1, 'name': 'streamname'}]
那么,如何以高效的方式用Python重新排序,使其变为像这样的顺序?
list = [{'nr' : 1, 'name': 'streamname'}, {'nr' : 2,'name': 'streamname'}, {'nr' : 3, 'name': 'streamname'}]
我想到了使用排序和创建lambda函数来对其进行排序。这是一个好方法吗?并且它有效率吗?
list.sort(cmp=lambda x,y: cmp(x['nr'], y['nr']))
operator
模块中的itemgetter
代替编写自己的 lambda 函数,这样会更快。 - milkypostmancmp
操作都需要比较两个变量 - 通过key
定义这些变量,其余部分是简单的比较... 想象一下,如果有其他特殊函数或标准需要进行比较而不仅仅是简单的 < = > 比较,那么你可以使用cmp
。 - eumirosort
方法和通用的sorted
函数时需要记住的另一个可能重要的区别是,前者会就地对列表进行排序但不返回任何内容,而后者则保留原始列表并返回一个新列表。 - martineau