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