yaml文件的类似集合的替代

时间:2015-06-10 09:02:07

标签: python containers yaml

我正在使用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>}}

是否存在这样的配置?

1 个答案:

答案 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)