Python 3:如何将数组转换为字典列表?

NGu*_*yen 0 python arrays dictionary

def get_list(name, ids):
    single_database = {}  
    database = [] 
    for id in ids:
        single_database['id'] = id
        single_database['name'] = name
        database.append(single_database.copy()) 

    return database

input = [{'name': 'David', 'id': ['d1','d2']},
            {'name':'John', 'id': ['j1','j2']}]

for single_database in input:
        get_list(single_database['name'], single_database['id'])
Run Code Online (Sandbox Code Playgroud)

您好,我想将上面的"输入"数组转换为字典列表,所以我编写了代码来转换它们.但是,"get_list"函数只释放最后一个字典.那么,如何获取所有字典列表并继续使用"get_list"函数.另外,除了我的方式,有什么方法可以更快地转换此输入?

这是我想要的输出:

{'id': 'd1', 'name': 'David'}
{'id': 'd2', 'name': 'David'}
{'id': 'j1', 'name': 'John'}
{'id': 'j2', 'name': 'John'}
Run Code Online (Sandbox Code Playgroud)

geo*_*org 8

这应该工作

list_of_dicts = [
    {'id': id, 'name': d['name']}
    for d in input
    for id in d['id']
]
Run Code Online (Sandbox Code Playgroud)

或者以更详细的形式:

def get_list(input):

    list_of_dicts = []

    for d in input:
        for id in d['id']:
            list_of_dicts.append({
                'id': id, 
                'name': d['name']
            })        

    return list_of_dicts
Run Code Online (Sandbox Code Playgroud)

一般来说,尽量避免使用临时变量(比如你的single_database)并使用文字.

此外,input变量名称是一个糟糕的选择,因为它隐藏了一个重要的内置函数.