如何根据嵌套值进行排序?

时间:2017-05-28 02:27:34

标签: python sorting dictionary

鉴于以下字典,您如何对" namedir"进行排序?列出与嵌套" last"相关的值键?还要注意最后一个名字"条目没有" last"键或值,所以我需要避免错过键错误。 谢谢!

{
  "namedir": [
    {
      "name": {
        "first": "joe",
        "last": "jones"
      }
    },
    {
      "name": {
        "first": "bob",
        "last": "doe"
      }
    },
    {
      "name": {
        "first": "pete",
        "last": "doe"
      }
    },
    {
      "name": {
        "first": "jane"
      }
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

您可以使用自定义排序键轻松完成此操作。当没有姓氏时,你需要决定做什么的规则。我选择将缺少的姓氏视为空字符串,这意味着这些条目首先出现。

sorted(namedir, key=lambda x: x['name'].get('last', ''))

这会给你:

[{'name': {'first': 'jane'}},
 {'name': {'first': 'bob', 'last': 'doe'}},
 {'name': {'first': 'pete', 'last': 'doe'}},
 {'name': {'first': 'joe', 'last': 'jones'}}]