如何使用属性值过滤YAML数据集?

时间:2013-07-21 03:06:47

标签: python-2.7 yaml pyyaml

我有一个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文件中每个玩家名字的列表。但我已经尝试了所有我能想到的东西,并试图尝试制作它,这样我就可以把这个玩家的名字插入到另一个搜索中以获得平衡。

我知道它可能是一些超级简单的东西,我可能会忽略,只是没有想到谷歌的正确短语,并且一旦有人指出它可能会面对半个小时。

1 个答案:

答案 0 :(得分:1)

doc只包含普通的Python内置类型。你真的不是在询问任何事情。

无效的那一行是尝试格式化doc['RealBank']['Players']['%s']['Balance']的结果,%s是文字键名。如果您想使用bean作为键,那么只需传入变量:

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

您还可以使用.items()迭代键值元组:

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