这就是我想要实现的目标:
list_dic_gen(['One','Two'], [['First','Second']])
是
[{'One': 'First', 'Two': 'Second'}]
作为第二个例子,函数调用:
list_dic_gen(['Second'], [['One'],['Third Fourth']])
预计将返回:
[{'Second': 'One'}, {'Second': 'Third Fourth'}]
但是我的代码
def list_dic_gen(lst,lol):
acc=[]
a=0
for x in lol:
accd={}
for b in x:
accd[lst[a]]=b
acc.append(accd)
if len(lst)>1:
a+=1
return acc
此代码适用于第二个示例,但对于第一个示例,for循环生成2个字典,即使列表中有1个列表
[{'One': 'First', 'Two': 'Second'}, {'One': 'First', 'Two': 'Second'}]
因为x
中有两个b
,并且您正在为这两个添加。在内部循环后追加acc
。
def list_dic_gen(lst,lol):
acc=[]
a=0
for x in lol:
accd={}
for b in x:
accd[lst[a]]=b
a += len(lst)>1 #you don't need a condition
acc.append(accd) #append the list after the loop
return acc
print(list_dic_gen(['One','Two'], [['First','Second']]))
我相信我对你的函数的完全重构和你的一样。我没有足够的检测结果呈阳性。
def list_dic_gen(keys:list, data:list) -> list[dict]:
return [{keys.pop(0):value for value in values} for values in data]