python:将列表与标题组合成字典

标签 python list dictionary

我想将两个列表组合成一个字典类型。

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/

相关文章:

swift - 如何在没有字典键的情况下获取值?

python - py2exe:MKL fatal error :无法加载 mkl_intel_thread.dll

python - 检查QLabel是否启用,pyqt标签状态(isEnabled)

python - 在 flask 应用程序中保留全局状态

python - 值错误 : circular reference detected with replit database

python - 为什么 list(my_list) 修改对象?

r - 绘制 map ,其中国家/地区的值作为 R 中的颜色?

python - python中的命名字典

list - 如何为 JAX-WS commons Maven 插件生成列表 setter ?

ios - 将长 JSON 响应分配给 Dictionary 会产生线程错误