如何按值对字典列表进行排序
How to sort a list of dictionaries of dictionaries by value
我有 list
个 dict
个 dict
个像这样:
mydic = [{'name':'a', 'loc':{'locname':'z'}, 'id':{'value':'1'}},{'name':'b', 'loc':{'locname':'o'}, 'id':{'value':'2'}}]
如何按 locname
排序?我应该得到这个:
mydic_sorted = [{'name':'b', 'loc':{'locname':'o'}, 'id':{'value':'2'}}, {'name':'a', 'loc':{'locname':'z'}, 'id':{'value':'1'}}]
您可以使用 lambda
函数作为函数的 key
参数
>>> mydic = [{'name':'a', 'loc':{'locname':'z'}, 'id':{'value':'1'}},{'name':'b', 'loc':{'locname':'o'}, 'id':{'value':'2'}}]
>>> sorted(mydic,key = lambda x:x['loc']['locname'])
[{'loc': {'locname': 'o'}, 'name': 'b', 'id': {'value': '2'}}, {'loc': {'locname': 'z'}, 'name': 'a', 'id': {'value': '1'}}]
参考: docs
sorted(iterable[, cmp[, key[, reverse]]])
key
specifies a function of one argument that is used to extract a comparison key from each list element: key=str.lower
. The default value is None
(compare the elements directly).
我有 list
个 dict
个 dict
个像这样:
mydic = [{'name':'a', 'loc':{'locname':'z'}, 'id':{'value':'1'}},{'name':'b', 'loc':{'locname':'o'}, 'id':{'value':'2'}}]
如何按 locname
排序?我应该得到这个:
mydic_sorted = [{'name':'b', 'loc':{'locname':'o'}, 'id':{'value':'2'}}, {'name':'a', 'loc':{'locname':'z'}, 'id':{'value':'1'}}]
您可以使用 lambda
函数作为函数的 key
参数
>>> mydic = [{'name':'a', 'loc':{'locname':'z'}, 'id':{'value':'1'}},{'name':'b', 'loc':{'locname':'o'}, 'id':{'value':'2'}}]
>>> sorted(mydic,key = lambda x:x['loc']['locname'])
[{'loc': {'locname': 'o'}, 'name': 'b', 'id': {'value': '2'}}, {'loc': {'locname': 'z'}, 'name': 'a', 'id': {'value': '1'}}]
参考: docs
sorted(iterable[, cmp[, key[, reverse]]])
key
specifies a function of one argument that is used to extract a comparison key from each list element:key=str.lower
. The default value isNone
(compare the elements directly).