从嵌套字典创建列表

时间:2014-08-24 14:57:25

标签: python python-2.7 dictionary

另一个Python noob这里有一个问题。我有一个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()并列出了理解但无法使其工作。任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分: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 ]

答案 1 :(得分:0)

这是另一种解决方案,如果您想要检索' app_key_id'来自' user_profile'持有&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}

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
相关问题