如何按数值列表对字典进行排序

时间:2016-05-17 10:24:20

标签: python sorting dictionary

假设一个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]}

3 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

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

这将根据其值的第0个元素对a_dict中的项进行排序。由于a_dict.items()会返回(key, value)对的元组,x[1]表示value

答案 1 :(得分: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])]
>>> 

答案 2 :(得分:0)

非常简单:

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