簡體   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