【问题标题】:How can I filter a YAML dataset with an attribute value?如何过滤具有属性值的 YAML 数据集?
【发布时间】:2013-07-21 03:06:46
【问题描述】:

我有一个这样的 yml 文件

RealBank:
  Players:
    player1:
      Balance: '0'
    player2:
      Balance: '0'
    player3:
      Balance: 63050

我可以让 python 打印出每个玩家的名字。但是对于我的生活,我不能拿那个球员的名字,并让他们的余额打印出来。

我的代码如下所示:

stream = open("config.yml", "r")
doc = yaml.load(stream)
beans = doc['RealBank']['Players']
for bean in beans:
    print bean
    print doc['RealBank']['Players']['%s']['Balance'] % bean  #this command does not work, no matter how i try to assemble it.

这为我提供了 yaml 文件中每个玩家名称的列表。但我已经尝试了所有我能想到和搜索的东西来尝试制作它,这样我就可以将那个玩家的名字插入到另一个搜索中来寻找他们的平衡。

我知道这可能是一些超级简单的事情,我可能忽略了,只是没有想到谷歌的正确短语,一旦有人指出它,可能会在半小时内面面相觑。

【问题讨论】:

    标签: python-2.7 yaml pyyaml


    【解决方案1】:

    doc 仅包含普通的 Python 内置类型。你并没有真正查询任何东西。

    该行不工作正在尝试格式化doc['RealBank']['Players']['%s']['Balance'] 的结果,%s 是文字键名。如果你想使用bean作为key,那么只需传入变量即可:

    print doc['RealBank']['Players'][bean]['Balance']
    

    您也可以使用.items() 来遍历键、值元组:

    for name, player in doc['RealBank']['Players'].items():
        print name, player['Balance']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-12
      • 2019-08-08
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多