Python 计算YAML文件中存在多少特定项?
我试图找出有多少“用户名”存在。目前有两个,我可以循环Python 计算YAML文件中存在多少特定项?,python,python-2.7,yaml,Python,Python 2.7,Yaml,我试图找出有多少“用户名”存在。目前有两个,我可以循环用户来获得这个,但感觉很笨拙。是否有一种方法可以获取用户中存在多少用户名 open('file.yaml', 'r') as f: file = yaml.safe_load(f) # count number of usernames in user...? file.yaml: host: "example.com" timeout: 60 work: - processes: 1 users: - us
用户
来获得这个,但感觉很笨拙。是否有一种方法可以获取用户中存在多少用户名
open('file.yaml', 'r') as f:
file = yaml.safe_load(f)
# count number of usernames in user...?
file.yaml:
host: "example.com"
timeout: 60
work:
-
processes: 1
users:
-
username: "me"
-
username: "notme"
如果要从特定结构中获取计数:
sum([len(x["users"]) for x in d["work"]])
对于一般解决方案,您可以执行以下操作:
f = open("test.yaml")
d = yaml.safe_load(f)
# d is now a dict - {'host': 'example.com', 'work': [{'processes': 1, 'users': [{'username': 'me'}, {'username': 'notme'}]}], 'timeout': 60}
def yaml_count(d, s):
c = 0
if isinstance(d, dict):
for k, v in d.iteritems():
if k == s: c += 1
c += yaml_count(v, s)
elif isinstance(d, list):
for l in d:
c += yaml_count(l, s)
return c
yaml_count(d, "username") # returns 2
@RomanPekar的回答是正确的,但是如果文件的最终结果是这样的,那么您的YAML结构也有点奇怪。存储单键dict列表真的没有意义,例如:
[{“username”:“me”},{“username”:“notme”}]
似乎有些多余。