如何用Python中的一个值对dict进行排序?

时间:2016-07-08 22:19:28

标签: python dictionary

我有这样的字典: key是一个字符串, value是一个字符串列表

    my_dict = {
    'key1': [value11, value12, value13],
    'key2': [value21, value22, value23],
    'key3': [value31, value32, value33],
    'key4': [value41, value42, value43]
}

e.g。

dict_0 = {
'key1' : [lv, 2, abc],
'key2' : [ab, 4, abc],
'key3' : [xj, 1, abc],
'key4' : [om, 3, abc],
}

我想根据值列表中的第二个值进行排序,因此,它应该是这样的:

dict_0 = {
'key3' : [xj, 1, abc],
'key1' : [lv, 2, abc],
'key4' : [om, 3, abc],
'key2' : [ab, 4, abc],
}

我想通过值列表中的一个值(即值* 2)对此dict进行排序,我该怎么做? 我在网站上进行了大量搜索,但没有找到类似的情况。

感谢。

2 个答案:

答案 0 :(得分:6)

词典不是有序的数据结构,如果你想要一个有序的数据结构,你可以使用OrderedDict()模块中的collections函数。

>>> dict_0 = {
... 'key1' : ['lv', 2, 'abc'],
... 'key2' : ['ab', 4, 'abc'],
... 'key3' : ['xj', 1, 'abc'],
... 'key4' : ['om', 3, 'abc'],
... }

>>> from collections import OrderedDict
>>> OrderedDict(sorted(dict_0.items(), key=lambda x: x[1][1]))
OrderedDict([('key3', ['xj', 1, 'abc']),
             ('key1', ['lv', 2, 'abc']),
             ('key4', ['om', 3, 'abc']),
             ('key2', ['ab', 4, 'abc'])])
>>> 

答案 1 :(得分:1)

您可以使用:

sorted(d.items(), key=lambda x: x[1])

这将根据字典中从最小到最大的每个条目的值对字典进行排序。

相关问题