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)
这应该工作
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变量名称是一个糟糕的选择,因为它隐藏了一个重要的内置函数.