我正在使用YAML文件来存储我的Python脚本要使用的一些数据。
结构或多或少如下:
<id1>:
email: <email address for id 1>
phone: <phone number for id 1>
<id2>:
email: <email address for id 2>
phone: <phone number for id 2>
解析这个YAML文件时,我得到一个字典:
{<id1>: {'email': <email address for id 1>, 'phone': <phone number for id 1>}, {<id2>: {'email': <email address for id 2>, 'phone': <phone number for id 2>}}
使用此配置时,ID可用作最高级别标识符。但对于我的脚本,情况并非如此:我希望能够将各自的数据保持在一起,而无需将其中一个键放在更高的级别。为了说明,我更喜欢这样的事情:
id: <id 1>
email: <email address for id 1>
phone: <phone number for id 1>
id: <id 2>
email: <email address for id 2>
phone: <phone number for id 2>
解析时,我应该得到这样的东西:
{{'id': <id1>, 'email': <email address for id 1>, 'phone': <phone number for id 1>}, {'id': <id2>, 'email': <email address for id 2>, 'phone': <phone number for id 2>}}
是否存在这样的配置?
答案 0 :(得分:2)
您是否在阵列之后?
- id: <id1>
email: <email address for id 1>
phone: <phone number for id 1>
- id: <id2>
email: <email address for id 2>
phone: <phone number for id 2>
那会给你这样的东西:
[{"id": "<id1>", "email": "<email address for id 1>", "phone": "<phone number for id 1>"}, {"id": "<id2>", "email": "<email address for id 2>", "phone": "<phone number for id 2>"}]
如果您确实需要一个字典(其中id
是键并且指向同时包含id
的记录),请考虑使用数组格式,但运行如下行:
contacts = dict((item["id"], item) for item in original_array)