yaml 文件的类似集合的替代方案

Set-like alternative for yaml files

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

有这样的配置吗?

你在找数组吗?

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