首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python ordereddict还是OrderedDict?

python ordereddict还是OrderedDict?
EN

Stack Overflow用户
提问于 2016-02-03 06:21:07
回答 1查看 2.6K关注 0票数 1

我现在很困惑。我正在使用PyYAML编辑一些YAML文件。

代码语言:javascript
复制
data = yaml.load_all(open('testingyaml.yaml'),Loader=yaml.RoundTripLoader)

我的testingyaml.yaml文件包含以下内容:

代码语言:javascript
复制
spring:
  profiles: dev
  datasource:
    url: jdbc:postgresql://127.0.0.1:5432/nfvgrid
dns:
  enable: false
cassandra:
  host: 192.168.7.151

当我打印数据时,它会打印以下内容:

ordereddict([('spring', ordereddict([('profiles', 'dev'), ('datasource', ordereddict([('url', 'jdbc:postgresql://127.0.0.1:5432/nfvgrid')]))])), ('dns', ordereddict([('enable', False)])), ('cassandra', ordereddict([('host', '192.168.7.151')]))])

我还想在这个有序字典上执行一些操作,但是python抛出了一个错误NameError: name 'ordereddict' is not defined

它通常是OrderedDict,但不知何故PyYAML会返回ordereddict。我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2016-02-03 06:40:16

几乎可以肯定的是,您使用的不是如上所述的pyyaml,因为它没有RoundTripLoader。相反,您可能正在使用ruamel.yaml

此备选方案在Python2安装上使用自己的ruamel.ordereddict,在Python3上使用原生collections.OrderedDict。此备选方案支持OrderedDict所执行的大多数操作,因此您没有理由不能操作它。请参阅其文档。

但是,如果您希望从一个转换为另一个,则可以执行以下操作:

代码语言:javascript
复制
x = collections.OrderedDict(some_ruamel_ordered_dict.items())
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35164913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档