bkc*_*ion 4 python dictionary list
我想将两个列表合并为一种字典类型。
Name = ['John','Mary','Serena','Felicia']
Data = ['26','179','25','164','29','149','29','167']
Run Code Online (Sandbox Code Playgroud)
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'} ]
}
Run Code Online (Sandbox Code Playgroud)
我尝试结合,list1 = {k: 'Name' for k in Name}但字典显示“John”=“Name”,这与我需要的相反。
几个嵌套的 zip 和切片可以在列表理解中构建字典,作为外部字典的值:
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)
Run Code Online (Sandbox Code Playgroud)
印刷:
{'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'}]}
Run Code Online (Sandbox Code Playgroud)
如果您不想创建“硬”切片,请使用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))]}
Run Code Online (Sandbox Code Playgroud)
(也感谢评论,不需要嵌套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'}]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
978 次 |
| 最近记录: |