如何用python实现字典的循环判断

字典vegetable=
{'紫贝天葵': {'min': 6.5, 'avg': 6.75, 'max': 7},
'金丝南瓜': {'min': 7.5, 'avg': 7.75, 'max': 8},
'鱼腥草叶': {'min': 8, 'avg': 8.5, 'max': 9},
'鱼腥草根': {'min': 6.5, 'avg': 6.75, 'max': 7},
'圣女果': {'min': 3.5, 'avg': 3.75, 'max': 4},
'荷兰豆': {'min': 8, 'avg': 8.5, 'max': 9},
'朝天椒': {'min': 18, 'avg': 19, 'max': 20},
'绿菜花': {'min': 1.8, 'avg': 1.9, 'max': 2},
'球茎茴香': {'min': 7.5, 'avg': 7.75, 'max': 8}}

我想用for循环查找一下里面有没有‘金丝南瓜’,如果有,就取金丝南瓜的max值,如果没有就打印‘没有这种蔬菜’。
for item in vegetable:
if item=='金丝南瓜':
print(vegetable[item]['max'])
else:
print('没有这种菜‘)
可是这样结果就是每次都打印了一遍’没有这种菜‘,请问这种情况能用for循环实现吗?

vegetable={'紫贝天葵': {'min': 6.5, 'avg': 6.75, 'max': 7},
'金丝南瓜': {'min': 7.5, 'avg': 7.75, 'max': 8},
'鱼腥草叶': {'min': 8, 'avg': 8.5, 'max': 9},
'鱼腥草根': {'min': 6.5, 'avg': 6.75, 'max': 7},
'圣女果': {'min': 3.5, 'avg': 3.75, 'max': 4},
'荷兰豆': {'min': 8, 'avg': 8.5, 'max': 9},
'朝天椒': {'min': 18, 'avg': 19, 'max': 20},
'绿菜花': {'min': 1.8, 'avg': 1.9, 'max': 2},
'球茎茴香': {'min': 7.5, 'avg': 7.75, 'max': 8}}


item ='金丝南瓜'
if item in vegetable.keys():
    print(vegetable[item]['max'])
else:
    print('没有这种菜')

不管复杂度问题,循环可以解决你的需求,不过,不是在循环内判断完成后直接输出,而是在循环内,判断出符合条件的项后,把值记录到其他变量,在循环完成 后再进行输出


mx = None
for item in vegetable:
  if item=='金丝南瓜':
    mx = vegetable[item]['max']
if mx == None:
  print('没有这种菜')
else:
  print(mx)

你既然定义了一个字典,就不要把它当成普通的list来用啊,字典有has_key()方法,可以直接判断出是否含有键,不仅代码少,可读性好,而且时间复杂度是O(1),比循环判断快的多

vegetable = {'紫贝天葵': {'min': 6.5, 'avg': 6.75, 'max': 7},
             '金丝南瓜': {'min': 7.5, 'avg': 7.75, 'max': 8},
             '鱼腥草叶': {'min': 8, 'avg': 8.5, 'max': 9},
             '鱼腥草根': {'min': 6.5, 'avg': 6.75, 'max': 7},
             '圣女果': {'min': 3.5, 'avg': 3.75, 'max': 4},
             '荷兰豆': {'min': 8, 'avg': 8.5, 'max': 9},
             '朝天椒': {'min': 18, 'avg': 19, 'max': 20},
             '绿菜花': {'min': 1.8, 'avg': 1.9, 'max': 2},
             '球茎茴香': {'min': 7.5, 'avg': 7.75, 'max': 8}}

target = '金丝南瓜'
key = 'max'

result = vegetable.get(target, f"key {target} not found!")
if isinstance(result, dict):
    print(result.get(key, f"key {key} not found!"))
else:
    print(result)