【发布时间】:2017-01-25 22:52:29
【问题描述】:
我有一个名为 input.yaml 的 YAML 文件:
cities:
1: [0,0]
2: [4,0]
3: [0,4]
4: [4,4]
5: [2,2]
6: [6,2]
highways:
- [1,2]
- [1,3]
- [1,5]
- [2,4]
- [3,4]
- [5,4]
start: 1
end: 4
我正在使用 PyYAML 加载它并打印结果如下:
import yaml
f = open("input.yaml", "r")
data = yaml.load(f)
f.close()
print(data)
结果是如下数据结构:
{ 'cities': { 1: [0, 0]
, 2: [4, 0]
, 3: [0, 4]
, 4: [4, 4]
, 5: [2, 2]
, 6: [6, 2]
}
, 'highways': [ [1, 2]
, [1, 3]
, [1, 5]
, [2, 4]
, [3, 4]
, [5, 4]
]
, 'start': 1
, 'end': 4
}
如您所见,每个城市和高速公路都表示为一个列表。但是,我希望它们被表示为一个元组。因此,我使用推导手动将它们转换为元组:
import yaml
f = open("input.yaml", "r")
data = yaml.load(f)
f.close()
data["cities"] = {k: tuple(v) for k, v in data["cities"].items()}
data["highways"] = [tuple(v) for v in data["highways"]]
print(data)
但是,这似乎是一个 hack。有什么方法可以指示 PyYAML 直接将它们读取为元组而不是列表?
【问题讨论】: