用于多字段排序的python关键函数
orderb的Python项目详细描述
python键函数,用于按方式按sql顺序进行多字段排序
用于内置的sorted()键函数。
还支持list.sort()执行就地排序。
实现使用operator.itemgetter()+一些内部帮助程序类来允许降序排序。
到目前为止,这已经在字典列表中测试和使用。添加对命名元组和其他元组的支持将 可能(使用operator.attrgetter())。
用法
- 类似sql的:orderby('foo ASC, bar DESC')
- 链接:asc('foo').desc('bar')用法
- 一次多个字段:asc('foo', 'bar')
示例
orderby()string语法:
>>>fromorderbyimportorderby>>>importjson>>>files=[...{'size':1234,'path':'foo/bar.txt'},...{'size':0,'path':'/dev/null'},...{'size':1234,'path':'foo/abc.bin'},...]>>>print(json.dumps(sorted(files,key=orderby('size DESC, path')),indent=2))[{"size":1234,"path":"foo/abc.bin"},{"size":1234,"path":"foo/bar.txt"},{"size":0,"path":"/dev/null"}]
链接asc()和desc()用法:
>>>fromorderbyimportasc,desc>>>print(json.dumps(sorted(files,key=desc('size').asc('path')),indent=2))[{"size":1234,"path":"foo/abc.bin"},{"size":1234,"path":"foo/bar.txt"},{"size":0,"path":"/dev/null"}]
列表的就地排序:
>>>files.sort(key=desc('path'))>>>print(json.dumps(files,indent=2))[{"size":1234,"path":"foo/bar.txt"},{"size":1234,"path":"foo/abc.bin"},{"size":0,"path":"/dev/null"}]>>>files.sort(key=desc('size').asc('path'))>>>print(json.dumps(files,indent=2))[{"size":1234,"path":"foo/abc.bin"},{"size":1234,"path":"foo/bar.txt"},{"size":0,"path":"/dev/null"}]
内部构件
稍后在此处解释…