Python 3.x 词典中的三个列表
我有三个列表,我想按照以下结构将其转换为字典列表: 预期产出:Python 3.x 词典中的三个列表,python-3.x,Python 3.x,我有三个列表,我想按照以下结构将其转换为字典列表: 预期产出: [{'Chamber pop': {'url': '/wiki/Chamber_pop', 'description': 'xxx'}, {'Dance-punk': {'url': '/wiki/Dance-punk', 'description': 'yyy'}, {'Dream pop': {'url': '/wiki/Dream_pop', 'description': 'zzz'}, {'Dunedin Sound':
[{'Chamber pop': {'url': '/wiki/Chamber_pop', 'description': 'xxx'},
{'Dance-punk': {'url': '/wiki/Dance-punk', 'description': 'yyy'},
{'Dream pop': {'url': '/wiki/Dream_pop', 'description': 'zzz'},
{'Dunedin Sound': {'url': 'Dunedin_Sound', 'description': 'aaa'}]
清单:
names = ['Chamber pop',
'Dance-punk',
'Dream pop',
'Dunedin Sound',]
urls = ['/wiki/Chamber_pop',
'/wiki/Dance-punk',
'/wiki/Dream_pop',
'/wiki/Dunedin_Sound']
description = ["xxx","yyy","zzz","aaa"]
到目前为止,我尝试的是:
res = {}
for x in names:
for y in url:
res[x] = {}
res[x]["url"] = y
但是,该代码的输出为:
{'Chamber pop': {'url': '/wiki/Twee_pop'},
'Dance-punk': {'url': '/wiki/Twee_pop'},
'Dream pop': {'url': '/wiki/Twee_pop'},
'Dunedin Sound': {'url': '/wiki/Twee_pop'}}
如您所见,url值不断重复。我猜这是因为某处正在覆盖该值。而且,它没有预期的结构,因为它都在字典中
我做错了什么?非常感谢您的帮助
谢谢通常,您可以在列表中并行迭代。然后你可以简单地使用听写理解:
names = ['Chamber pop','Dance-punk','Dream pop', 'Dunedin Sound',]
urls = ['/wiki/Chamber_pop', '/wiki/Dance-punk', '/wiki/Dream_pop','/wiki/Dunedin_Sound']
description = ["xxx","yyy","zzz","aaa"]
res = {n: {'url':u, 'description':d}
for n, u, d in zip(names, urls, description)}
这使得=
{'Chamber pop': {'url': '/wiki/Chamber_pop', 'description': 'xxx'},
'Dance-punk': {'url': '/wiki/Dance-punk', 'description': 'yyy'},
'Dream pop': {'url': '/wiki/Dream_pop', 'description': 'zzz'},
'Dunedin Sound': {'url': '/wiki/Dunedin_Sound', 'description': 'aaa'}}
{'Chamber pop': {'url': '/wiki/Chamber_pop', 'description': 'xxx'},
'Dance-punk': {'url': '/wiki/Dance-punk', 'description': 'yyy'},
'Dream pop': {'url': '/wiki/Dream_pop', 'description': 'zzz'},
'Dunedin Sound': {'url': '/wiki/Dunedin_Sound', 'description': 'aaa'}}
通常情况下,您可以创建列表,允许您并行地迭代它们。然后你可以简单地使用听写理解:
names = ['Chamber pop','Dance-punk','Dream pop', 'Dunedin Sound',]
urls = ['/wiki/Chamber_pop', '/wiki/Dance-punk', '/wiki/Dream_pop','/wiki/Dunedin_Sound']
description = ["xxx","yyy","zzz","aaa"]
res = {n: {'url':u, 'description':d}
for n, u, d in zip(names, urls, description)}
这使得=
{'Chamber pop': {'url': '/wiki/Chamber_pop', 'description': 'xxx'},
'Dance-punk': {'url': '/wiki/Dance-punk', 'description': 'yyy'},
'Dream pop': {'url': '/wiki/Dream_pop', 'description': 'zzz'},
'Dunedin Sound': {'url': '/wiki/Dunedin_Sound', 'description': 'aaa'}}
{'Chamber pop': {'url': '/wiki/Chamber_pop', 'description': 'xxx'},
'Dance-punk': {'url': '/wiki/Dance-punk', 'description': 'yyy'},
'Dream pop': {'url': '/wiki/Dream_pop', 'description': 'zzz'},
'Dunedin Sound': {'url': '/wiki/Dunedin_Sound', 'description': 'aaa'}}
它看起来像是要一起迭代列表,并通过索引(第一个url的名字,反之亦然)匹配它们 您所做的是,对于名称列表中的每个名称,您迭代所有url,并在每次迭代中分配,您实际上覆盖了url值。最后,url列表中的最后一个url始终是每个名称的赋值 如果添加打印,您将看到每个名称的最后一个url是列表中的最后一个:
res = {}
for x in names:
print(x)
for y in urls:
print(x, y)
res[x] = {}
res[x]["url"] = y
收益率:
Chamber pop
Chamber pop /wiki/Chamber_pop
Chamber pop /wiki/Dance-punk
Chamber pop /wiki/Dream_pop
Chamber pop /wiki/Dunedin_Sound
Dance-punk
Dance-punk /wiki/Chamber_pop
Dance-punk /wiki/Dance-punk
Dance-punk /wiki/Dream_pop
Dance-punk /wiki/Dunedin_Sound
Dream pop
Dream pop /wiki/Chamber_pop
Dream pop /wiki/Dance-punk
Dream pop /wiki/Dream_pop
Dream pop /wiki/Dunedin_Sound
Dunedin Sound
Dunedin Sound /wiki/Chamber_pop
Dunedin Sound /wiki/Dance-punk
Dunedin Sound /wiki/Dream_pop
Dunedin Sound /wiki/Dunedin_Sound
你能做的就是通过索引匹配它们。
当然,这里有一个隐藏的假设,即所有列表都具有相同的长度
final_res_dict = {}
for index in range(len(names)):
name = names[index]
final_res_dict[name] = {"url": urls[index], "description": description[index]}
这将产生:
它看起来像是要一起迭代列表,并通过索引(第一个url的名字,反之亦然)匹配它们 您所做的是,对于名称列表中的每个名称,您迭代所有url,并在每次迭代中分配,您实际上覆盖了url值。最后,url列表中的最后一个url始终是每个名称的赋值 如果添加打印,您将看到每个名称的最后一个url是列表中的最后一个:
res = {}
for x in names:
print(x)
for y in urls:
print(x, y)
res[x] = {}
res[x]["url"] = y
收益率:
Chamber pop
Chamber pop /wiki/Chamber_pop
Chamber pop /wiki/Dance-punk
Chamber pop /wiki/Dream_pop
Chamber pop /wiki/Dunedin_Sound
Dance-punk
Dance-punk /wiki/Chamber_pop
Dance-punk /wiki/Dance-punk
Dance-punk /wiki/Dream_pop
Dance-punk /wiki/Dunedin_Sound
Dream pop
Dream pop /wiki/Chamber_pop
Dream pop /wiki/Dance-punk
Dream pop /wiki/Dream_pop
Dream pop /wiki/Dunedin_Sound
Dunedin Sound
Dunedin Sound /wiki/Chamber_pop
Dunedin Sound /wiki/Dance-punk
Dunedin Sound /wiki/Dream_pop
Dunedin Sound /wiki/Dunedin_Sound
你能做的就是通过索引匹配它们。
当然,这里有一个隐藏的假设,即所有列表都具有相同的长度
final_res_dict = {}
for index in range(len(names)):
name = names[index]
final_res_dict[name] = {"url": urls[index], "description": description[index]}
这将产生: