簡體   English   中英

使用字典鍵值對列表進行排序

[英]Sort list using dictionary key values

可以說我有一個清單

list_values = ['key3', 'key0', 'key1', 'key4', 'key2']

和命令的命令

ordered_dict = OrderedDict([('key4', 0), ('key1', 1), ('key2', 2), ('key0', 3), ('key3', 4)])

如何使用ordered_dict鍵對list_values進行排序?

即: sorted_list = ['key4', 'key1', 'key2', 'key0', 'key3']

編輯:由於幾乎所有的答案都可以解決問題,什么是最合適,最完美的pythonic方法?

調用list.sort ,傳遞一個自定義key

list_values.sort(key=ordered_dict.get)    
list_values
# ['key4', 'key1', 'key2', 'key0', 'key3']

另外,非就地版本也可以使用

sorted(list_values, key=ordered_dict.get)
# ['key4', 'key1', 'key2', 'key0', 'key3']

如果我們假設列表是dict的子集:

list_values = ['key3', 'key1']

ordered_dict = OrderedDict([('key4', 0), ('key1', 1), ('key2', 2), ('key0', 3), ('key3', 4)])

output = [v for v in ordered_dict if v in list_values]

print(output)

['key1', 'key3']

范例2:

list_values = ['key3', 'key0', 'key1', 'key4', 'key2']

ordered_dict = OrderedDict([('key4', 0), ('key1', 1), ('key2', 2), ('key0', 3), ('key3', 4)])

output = [v for v in ordered_dict if v in list_values]

print(output)

['key4', 'key1', 'key2', 'key0', 'key3']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM