[英]Sort list of dictionaries by key using a custom sort function
我有一个字典列表,我希望通过键'id'在python中排序。
items = [{'id' : 883},{'id' : 547},{'id' : 898},{'id' : 30},{'id' : 883}]
我希望根据给定的排序顺序按特定顺序对它们进行排序:
[30, 883, 547, 898]
我将如何在python3中执行此操作?
使用key
参数和带有自定义排序顺序的列表。
sort_order = [30, 883, 547, 898]
items.sort(key=lambda d: sort_order.index(d['id']))
使用@Sphinx的建议,您可以预先索引列表以获得一些额外的速度改进O(1)
而不是O(n)
sort_order_index = {val: i for i, val in enumerate(sort_order)}
items.sort(key=lambda d: sort_order_index.get(d['id'], 0))
您可以在一行中尝试不带循环,如下所示:
items = [{'id' : 883},{'id' : 547},{'id' : 898},{'id' : 30},{'id' : 883}]
sorting_order=[30, 883, 547, 898]
print(sorted(items,key=lambda x:sorting_order.index(x['id'])))
输出:
[{'id': 30}, {'id': 883}, {'id': 883}, {'id': 547}, {'id': 898}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.