我想将两个列表组合成一个字典类型。
Name = ['John','Mary','Serena','Felicia']
Data = ['26','179','25','164','29','149','29','167']
Json 格式的理想输出
{"people":[{'Name': 'John',
'Age': '26',
'Height': '179'},
{'Name': 'Mary',
'Age': '25',
'Height': '164'}
{'Name': 'Serena',
'Age': '29',
'Height': '149'}
{'Name': 'Felicia',
'Age': '29',
'Height': '167'} ]
}
我尝试结合 list1 = {k: 'Name' for k in Name}
但是字典
显示的 'John' = 'Name' 与我需要的相反。
最佳答案
一些嵌套的 zips & slices 可以在列表理解中构建字典,作为外部字典的值:
Name = ['John','Mary','Serena','Felicia']
Data = ['26','179','25','164','29','149','29','167']
result = {'people':[{'Name' : name, 'Age' : age, 'Height' : height}
for name,(age,height) in zip(Name,zip(Data[::2],Data[1::2]))]}
print(result)
打印:
{'people': [{'Name': 'John', 'Height': '179', 'Age': '26'}, {'Name': 'Mary', 'Height': '164', 'Age': '25'}, {'Name': 'Serena', 'Height': '149', 'Age': '29'}, {'Name': 'Felicia', 'Height': '167', 'Age': '29'}]}
如果您不想创建“硬”切片,请使用 itertools.islice
,将整数值转换为整数也很有趣,这避免了整数字典序比较的简单陷阱稍后的字符串:
from itertools import islice
result = {'people':[{'Name' : name, 'Age' : int(age), 'Height' : int(height)}
for name,age,height in zip(Name,islice(Data,None,None,2),islice(Data,1,None,2))]}
(还要感谢注释,无需嵌套 zip
语句)
结果:
{'people': [{'Height': 179, 'Age': 26, 'Name': 'John'},
{'Height': 164, 'Age': 25, 'Name': 'Mary'},
{'Height': 149, 'Age': 29, 'Name': 'Serena'},
{'Height': 167, 'Age': 29, 'Name': 'Felicia'}]}
关于python:将列表与标题组合成字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49093428/