[英]pythonic way to iterate over this dict structure
我的结构在YAML文件中是这样的:
nutrition:
fruits:
apple:
banana:
pear:
veggies:
spinach:
zucchini:
squash:
meats:
chicken:
fish:
ham:
我用yaml.load()加载它
不确定但很可能是由于叶元素末尾的冒号(我不确定是否需要在那里),所以整个结构是一个三级字典。 如果需要提高效率,我可以更改YML。
现在,我想快速遍历该结构,并根据找到的叶级元素(例如“菠菜”),查找另一个简单的字典,称为“食谱”,其中可以包含字符串“ spinach”作为其键的子字符串 。 该查找字典可以具有表示“菠菜汁”或“菠菜派”或“鸡肉菠菜”的键。
我找到了一种方法来执行此操作,但不确定它是否是正确的pythonic方法。 这是我所拥有的:
for food_class in database['nutrition']:
for food in database['nutrition'][food_class]:
for key, value in recipes.items():
if re.search(food, key):
print key
有什么建议/指针可以使其更高效和/或更Python化吗?
您可以使用dict.items()
因此无需将字典查找放入嵌套循环中。
食物不是正则表达式,只是字符串,因此请使用in
而不是re.search()
。
由于您没有使用recipe
的value
,因此不需要.items()
for food_class, foods in database['nutrition'].items():
for food in foods:
for key in recipes:
if food in key:
print(key)
如果要整体搜索食物,则可以使用re.search(r'\\b' + food + r'\\b', key)
或food in recipes.split(' ')
中的food in recipes.split(' ')
作为测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.