Python 如何从字典列表中获取值为此创建函数

Python 如何从字典列表中获取值为此创建函数,python,dictionary,Python,Dictionary,我有一本字典,它有一个字典列表 字典列表有另一个字典列表 我需要提取这些值并将其附加到列表中 我需要写一个函数。如果子项具有名称附加到父项列表,则字典传递函数的任何列表都将创建一个输出,如下所示 a = [{"id": "1", "Area": [{"id": "2", "name": "Clinical"},

我有一本字典,它有一个字典列表

  • 字典列表有另一个字典列表

  • 我需要提取这些值并将其附加到列表中

我需要写一个函数。如果子项具有
名称
附加到父项列表,则字典传递函数的任何列表都将创建一个输出,如下所示

a = [{"id": "1", "Area": [{"id": "2", "name": "Clinical"},
                          {"id": "23", "name": "Delivery"}]},
     {"id": "2", "Area": [{"id": "2", "name": "Clinical"},
                          {"id": "23", "name": "Delivery"}]}]
预期输出:

[{"id": "1", "Area": ["Clinical", "Delivery"]},
 {"id": "2", "Area": ["Clinical", "Delivery"]}]
代码如下

result = []
temp = {}
for i in range(0,len(a)):
    templist = []
    b = a[i]['Area'][i]['name']
    c = a[i]['id']
    temp['id'] = c
    templist.append(b)
    temp['Area'] = templist
    result.append(temp)
    print (result)

我的输出未提取并放入列表?

以下是一个可能的解决方案:

result = [{'id': d['id'], 'Area': [nd['name'] for nd in d['Area']]} for d in a]

下面是一个关于口述和列表理解的解决方案

a=[{ "id":"1", "Area":[ { "id":"2", "name":"Clinical" }, 
                        { "id":"23", "name":"Delivery" }], },
   { "id":"2", "Area":[ { "id":"2", "name":"Clinical" }, 
                        { "id":"23", "name":"Delivery" }] } ]

res = dict(d, Area=[d2['name'] for d2 in d['Area']]) for d in a]
print(res)
输出

[{'id': '1', 'Area': ['Clinical', 'Delivery']}, 
 {'id': '2', 'Area': ['Clinical', 'Delivery']}]

您将temp置于for循环之外,因此在循环期间不会重置temp。更改
id
的值时,
id
的值将全部更改

result = []
for i in range(0,len(a)):
    temp = {}
    templist = []
    b = a[i]['Area'][i]['name']
    c = a[i]['id']
    temp['id'] = c
    templist.append(b)
    temp['Area'] = templist
    result.append(temp)
print (result)

这回答了你的问题吗?如果
a={“id”:“1”,“Area”:[{“id”:“2”,“name”:“Clinical”},{“id”:“23”,“name”:“Delivery”},},{“id”:“2”,“Area”:[{“id”:“2”,“name”:“Clinical”},{“id”:“23”,“name”:“Delivery”}
如果字典只对两者起作用,因为对于a中的i:将进入循环。但yur代码如何工作良好?如果a={“id”:“1”,“区域”:[{“id”:“2”,“名称”:“临床”},{“id”:“23”,“名称”:“交付”},},{“id”:“2”,“区域”:[{“id”:“2”,“名称”:“临床”},{“id”:“23”,“名称”:“交付”}意思是说只有字典而不是字典列表