为什么循环两次

  • 本文关键字:两次 循环 python
  • 更新时间 :
  • 英文 :


这就是我想要实现的目标:

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]

最新更新