按python中的预定义值对dicts列表进行排序

时间:2016-07-26 15:08:41

标签: python list sorting dictionary

我在Python中有一个dicts列表,让我们说:

mylist = [{key1: value1, key2: value2}, {key1: value3, key2: value4}, {key1: value5, key2: 'something else'},]

我希望按照预定义的顺序排列该列表

x = ['something else', value4, value2]

修改

我的预期结果是

mylist = [{key1: value5, key2: 'something else'}, {key1: value3, key2: value4}, {key1: value1, key2: value2}, ]

所以它基本上按照列表 x 的顺序在 key2 上对此列表进行排序。抱歉缺乏明确性。

我发现的所有内容都是按字母顺序或数字顺序排序,而不是按特殊顺序排序。任何帮助都非常感谢。

亲切的问候 奥利弗

2 个答案:

答案 0 :(得分:2)

使用sort函数可以做到。你需要钥匙来定义订单。

>>> mylist
[{1: 1, 2: 2}, {1: 3, 2: 4}, {1: 5, 2: 'something else'}]
>>> x
['something else', 4, 2]
>>> sorted( mylist, key = lambda item: sum([ x.index(i) if i in x else len(x)  for i in item.values()]) )
[{1: 5, 2: 'something else'}, {1: 3, 2: 4}, {1: 1, 2: 2}]

- update--
如果你想按第二个值排序

sorted( mylist, key = lambda item: x.index(item[item.keys()[1]]) )

答案 1 :(得分:0)

你可能想要某种lambda:

>>> l = [1,5,2,6]
>>> sorted(l,cmp=lambda x,y:x-y)
[1,2,5,6]
>>> sorted(l,cmp=lambda x,y:y-x)
[6,5,2,1]

只需修改lambda以某种方式比较两个值