这个问题在这里已有答案:
如何按Python中字典的值对字典列表进行排序? 17个答案我有一个dict的dict list ,如下所示:
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'}}]This question already has an answer here:
How do I sort a list of dictionaries by a value of the dictionary? 16 answersI have a list of dicts of dicts like this:
mydic = [{'name':'a', 'loc':{'locname':'z'}, 'id':{'value':'1'}},{'name':'b', 'loc':{'locname':'o'}, 'id':{'value':'2'}}]How do I sort it by locname? I should get this:
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'}}]参考: 文档
sorted(iterable[, cmp[, key[, reverse]]])
key指定一个参数的函数,该函数用于从每个列表元素中提取比较键: key=str.lower 。 默认值为None (直接比较元素)。
You can by using a lambda function as a key argument to the function
>>> 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'}}]Ref: The 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).
更多推荐
发布评论