我有以下数据结构:
[
{ some: thing9,
key: 9,
},
{ some: thing3,
key: 3,
},
{ some: thing2,
key: 2,
},
{ some: thing1,
key: 1,
}
]
如何根据字典的键值对此数组进行排序,以便我得到:
[
{ some: thing1,
key: 1,
},
{ some: thing2,
key: 2,
},
{ some: thing3,
key: 3,
},
{ some: thing9,
key: 9,
}
]
由于
答案 0 :(得分:3)
sorted(data, key=operator.itemgetter('key'))
Sorting HOWTO更详细地解释了这一点。但基本思想是所有与排序相关的函数都采用key
参数,这是一个在比较值之前应用于每个值的可调用函数。
因此,我们希望key
获取您list
的其中一个元素,并返回您想要排序的内容。元素为dict
s,您希望按其key
项进行排序。 itemgetter
函数完全符合您的要求。 (如果该功能不可用,您可以使用,例如,lambda item: item['key']
。)
答案 1 :(得分:2)
如果您更喜欢使用lambda表达式,这也是解决问题的合适方法:
sorted(data, key=lambda x: x['key'])
所以:
from pprint import pprint
data = [
{ 'some': 'thing9',
'key': 9,
},
{ 'some': 'thing3',
'key': 3,
},
{ 'some': 'thing2',
'key': 2,
},
{ 'some': 'thing1',
'key': 1,
}
]
pprint(sorted(data, key=lambda x:x['key']))
输出
[{'key': 1, 'some': 'thing1'},
{'key': 2, 'some': 'thing2'},
{'key': 3, 'some': 'thing3'},
{'key': 9, 'some': 'thing9'}]