2016-05-17 60 views
1

假設一個Python字典,其中鍵是字符串,對應的值是整數列表。如何使用數值列表按值列表排序

> my_dict = {} 
> my_dict['key1'] = [1,2,3] 
> my_dict['key2'] = [4,5] 
> my_dict['key3'] = [3,4,5] 
> my_dict 
# Python dictionaries are unordered by default 
{'key2': [4, 5], 'key3': [3, 4, 5], 'key1': [1, 2, 3]} 

你會寫什麼功能,以獲得每個值(即,每個列表的第一個元素)的第一個元素排序的類字典對象。

> from collections import OrderedDict 
> def my_function(a_dict): 
>  return OrderedDict(sorted(a_dict.items(), magic_specified_here)) # Just an example 
> sorted_dict = my_function(my_dict) 
> sorted_dict 
{'key1': [1, 2, 3], 'key3': [3, 4, 5], 'key2': [4, 5]} 

回答

2

您可以使用以下方法:

return OrderedDict(sorted(a_dict.items(), key=lambda x: x[1][0])) 

這將在a_dict根據其值的0號元素的項目進行排序。由於a_dict.items()返回一個(key, value)對的元組,x[1]表示value

+0

清晰和簡明的答案!謝謝。 –

0

可以使用key參數sorted(my_dict.items(), key=lambda x:x[1][0])

>>> my_dict = {} 
>>> my_dict['key1'] = [1,2,3] 
>>> my_dict['key2'] = [4,5] 
>>> my_dict['key3'] = [3,4,5] 
>>> my_dict 
{'key3': [3, 4, 5], 'key2': [4, 5], 'key1': [1, 2, 3]} 
>>> my_dict.items() 
dict_items([('key3', [3, 4, 5]), ('key2', [4, 5]), ('key1', [1, 2, 3])]) 
>>> sorted(my_dict.items(), key=lambda x:x[1][0]) 
[('key1', [1, 2, 3]), ('key3', [3, 4, 5]), ('key2', [4, 5])] 
>>> 
0

很簡單:

def my_function(a_dict): 
    return OrderedDict(sorted(a_dict.items(), key=lambda x: x[1][0]))