【问题标题】:Create a list from a nested dictionary [duplicate]从嵌套字典创建列表[重复]
【发布时间】:2014-08-24 14:57:24
【问题描述】:

这里是另一个 Python 菜鸟,有一个问题。我有一个 Python 嵌套字典,看起来像这样:(我分隔了approved_apps 列表只是为了更容易阅读)

approved_apps= [
{'app_key_id':9991,'app_name':'Posts','app_path':'/posts'},
{'app_key_id':8881,'app_name':'Tasks','app_path':'/tasks'},
{'app_key_id':7771,'app_name':'Projects','app_path':'/projects'}]

user_profile = {
'user_info':
{'user_lname':'Doe','user_fname':'John','user_email':'johndoe@gmail.com'},
'user_privileges':approved_apps}

我想从 user_profile 字典中提取 app_key_id,这样我就可以得到一个如下所示的列表:

desired_result = [9991,8881,7771]

我尝试了 dict.items() 和列表推导,但无法正常工作。任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: python python-2.7 dictionary


    【解决方案1】:

    只需遍历并使用键访问每个字典:

    [d["app_key_id"] for d in approved_apps]#
    
    [9991, 8881, 7771]
    

    如果可能有没有密钥的字典来避免密钥错误,请使用if "app_key_id" in d

    [d["app_key_id"] for d in approved_apps if "app_key_id" in d ]
    

    【讨论】:

      【解决方案2】:

      如果您想从包含“approved_apps”的“user_profile”中检索“app_key_id”,这是另一种解决方案

      approved_apps= [
      {'app_key_id':9991,'app_name':'Posts','app_path':'/posts'},
      {'app_key_id':8881,'app_name':'Tasks','app_path':'/tasks'},
      {'app_key_id':7771,'app_name':'Projects','app_path':'/projects'}]
      
      user_profile = {
      'user_info':
      {'user_lname':'Doe','user_fname':'John','user_email':'johndoe@gmail.com'},
      'user_privileges':approved_apps}
      
      app_key_id=None
      
      for k,v in user_profile.items():
          app_key_id=[result['app_key_id'] for result in v if type(v) is list and 'app_key_id' in result]
      
      print app_key_id
      

      【讨论】:

        猜你喜欢
        • 2020-01-23
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 2021-04-04
        • 2021-11-20
        • 2021-04-19
        • 2018-01-16
        • 1970-01-01
        相关资源
        最近更新 更多