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': {'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 值不断重复。我想这是因为某处覆盖了该值。此外,它没有预期的结构,因为它都在字典中。
我究竟做错了什么?将不胜感激任何帮助。
谢谢
解决方案
通常,zip()
您的列表允许您并行迭代它们。然后你可以简单地使用字典理解:
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)}
这使得 res =
{'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'}}
推荐阅读
- c# - csproj LangVersion 属性覆盖任何导入的项目
- c# - 为什么从 DynamoDb 字符串列表属性中删除最后一个字符串不更新表中的项目
- xaml - 如何在 UWP [XAML] 中隐藏带有 DataGridTextColumn 的列?
- .net - Microsoft 单元测试-将测试标记为仅按需运行的实用方法
- mongodb - 使用mongodb解释器在zeppelin notebook中声明全局变量?
- linux - 使用 inittab 中的 respawn 条目重新启动 linux 应用程序不起作用
- .net-core - 添加范围后未加载实体框架核心默认值
- mysql - H2 jdbc 异常 - 具有奇数个字符的十六进制字符串
- powershell - retrieve users of a group by group sid
- php - PHP 7.2 : how to check if in static mode