-2

我希望在我的代码中使用 OrderedDict,因为该项目的 Ruby 版本将 YAML 用于地图和设置,但 OrderedDict 尚未针对 Python 3 进行更新。

项目的Ruby版本使用这个文件:https ://mega.co.nz/#!zhYRwA4B!HceqC3-NmmN44U70--jMxiAWQ4wz5MdAeilteKAOnSM

我将导入行更改为:

from collections import UserDict
from collections import MutableMapping as DictMixin

我已经知道 v3 不使用 iterkeys 那么我如何将 iterkeys 更改为 MutableMapping 可以理解的内容?

iterkeys = DictMixin.iterkeys
itervalues = DictMixin.itervalues
iteritems = DictMixin.iteritems

我已经看过很多关于如何更改它的示例,但我不明白如何在这里使用它们。

也许我应该在 Python 3 中使用其他东西来支持 YAML 文件,也许?

编辑:我称我的文件为 yaml.py。我不应该那样做的。我也有一个不喜欢的文件路径。我已经删除它并且它有效。

编辑2:我刚刚意识到我搞砸了我的问题。它应该是关于 Python 中的 OMAP 而不是 YAML。我会为此提出一个不同的问题。谢谢你们的帮助。

4

1 回答 1

0

一步步:

  1. 创建python 3 vitrtualenv

    mkvirtualenv -p python3 testyaml
    
  2. 在 virtualenv 中安装 pyaml

    pip install pyaml
    
  3. 现在创建一些 yaml 文件(来自https://en.wikipedia.org/wiki/YAML#Examples的示例):

    receipt:     Oz-Ware Purchase Invoice
    date:        2012-08-06
    customer:
        given:   Dorothy
        family:  Gale
    
    items:
        - part_no:   A4786
          descrip:   Water Bucket (Filled)
          price:     1.47
          quantity:  4
    
        - part_no:   E1628
          descrip:   High Heeled "Ruby" Slippers
          size:      8
          price:     100.27
          quantity:  1
    
    bill-to:  &id001
        street: |
                123 Tornado Alley
                Suite 16
        city:   East Centerville
        state:  KS
    
    ship-to:  *id001
    
    specialDelivery:  >
        Follow the Yellow Brick
        Road to the Emerald City.
        Pay no attention to the
        man behind the curtain.
    
  4. 和python脚本

    import yaml
    
    d = yaml.load(open('foo.yaml'))
    
    print(d.keys())
    print(d.values())
    
  5. 运行脚本

    python3 foo.py
    
  6. 检查结果

于 2013-09-09T13:10:13.217 回答