【问题标题】:How to transform an object into a dictionary?如何将对象转换为字典?
【发布时间】:2019-02-15 12:55:21
【问题描述】:

我从一个打开并读取 YAML 文件的函数返回了一个对象 <generator object load_all at 0x000000000309AB40>。从这个返回中,我需要创建一个有组织的文件字典。

#FILE YAML TEST.yaml   
---
MAIN:
  Name: Jaqueline
  Age: 30
  City: New York
OTHER:
  State: True

______________________________________________________
#PYTHON
from ruamel.yaml import YAML
from pathlib import Path


def file_yaml():
   yaml = YAML()
   stream = Path('TEST.yaml')
   yaml_conf=yaml.load_all(stream)
   print(yaml_conf)

   return yaml_conf


yaml=file_yaml()
dictionary=?????

yaml 是一个对象<generator object load_all at 0x000000000309AB40>

如果我做: ...

yaml=file_yaml()
dictionary =dict(yaml)
print dictionary

我有:{'MAIN': 'OTHER'}。我从档案中丢失了很多信息!!! 如何使用文件的数据创建正确的字典?

【问题讨论】:

  • 您需要先打开您的yaml 文件,然后才能将其传递给load

标签: python python-2.7 yaml


【解决方案1】:

对我来说很好用:

import yaml

with open('random.yaml', 'r') as fin:
    yml = yaml.safe_load(fin)

yml


{'MAIN': {'Name': 'Jaqueline', 'Age': 30, 'City': 'New York'},
 'OTHER': {'State': True}}

【讨论】:

  • 我想保留返回对象的函数。怎么做?
  • 对不起,我不明白这个问题
  • @user199858 你要求保留生成器对象吗?
  • 另外,我在 ruamel.yaml 中没有 safe_load。这个包比yaml 更新了吧?
  • 确定它是较新的我从未听说过它,根据我的经验我只使用过pyyaml
猜你喜欢
  • 2015-11-05
  • 2018-07-15
  • 2019-10-10
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多