字典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)