3 回答
TA贡献1852条经验 获得超1个赞
您缺少一个break语句或一个标志,表明您找到了结果。
另外,除了迭代外,range(len(wine))您还可以直接在酒单上进行迭代,该酒单每次迭代都会返回一个酒。这将使您的代码更具可读性,可维护性和效率:
wines_found = False
for w in wine:
if wish_wine in w['Name']:
print('wine', wine['Name'], 'is', wine['price'], '$'.)
wines_found = True
if not wines_found:
print('Sorry, there is no wine what you want.')
请记住,如果您的酒名是“ Merlot”,那么M in "Merlot"您会发现它通过了。如果您有多种开始的葡萄酒,这将成为一个问题M。
如果您希望避免这种情况,请更改if wish_wine in w['Name']为if wish_wine == w['Name'],然后添加一个break。
TA贡献1862条经验 获得超6个赞
您可以collections.defaultdict用来重组字典,以按酒名排序。仅当您要查找完全匹配的名称时,此方法才有效。
from collections import defaultdict
wine_d = defaultdict(list)
for item in wine:
wine_d[item['Name']].append(item)
然后访问输入葡萄酒名称的信息很简单:
wish_wine = input('Insert the wine what you want to have : ')
print(wine_d.get(wish_wine, 'No wine found'))
添加回答
举报