Ami*_*mir 2 python list sorted
给出这样的字典列表:
x = [
{'name':'a', 'student': 1 , 'age':19},
{'name':'b', 'student': 0 , 'age':10}
]
Run Code Online (Sandbox Code Playgroud)
如果学生等于1,我想按年龄对其进行排序.如果在下面的陈述中,我能以某种方式表达吗?
sortedlist = sorted(x, key=lambda k: k['age'])
Run Code Online (Sandbox Code Playgroud)
谢谢,
如果你使用itemgetter +一个生成器,而不是lambda + list comp,你将获得迄今为止我发现的最佳性能.这是在10k元素的dicts列表上测试的.与列表comp + lambda相比,速度提高了近30%.此外,如果您可以安全地假设"学生"始终是有效密钥并直接访问它,您再次获得更快的速度d.get('student', 0) == 1
from operator import itemgetter
sorted((d for d in x if d['student']==1), key=itemgetter('age'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3324 次 |
| 最近记录: |