[英]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.