繁体   English   中英

使用自定义排序功能按键对字典列表进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM