营养问题 - 我不明白为什么我的字典不起作用

问题描述 投票:0回答:5

我正在尝试解决 CS50 python 课程中的营养问题,我将字典定义如下:

fruits = [{"Name": "Apple", "Calories": "130"},
        {"Name": "Avocado", "Calories": "50"},
        {"Name": "Banana", "Calories": "110"},
        {"Name": "Cantaloupe", "Calories": "50"},
        {"Name": "Grapefruit", "Calories": "60"},
        {"Name": "Grapes", "Calories": "90"},
        {"Name": "Honeydew", "Calories": "50"},
        {"Name": "Kiwifruit", "Calories": "90"},
        {"Name": "Lemon", "Calories": "15"},
        {"Name": "Lime", "Calories": "20"},
        {"Name": "Nectarine", "Calories": "60"},
        {"Name": "Orange", "Calories": "80"},
        {"Name": "Peach", "Calories": "60"},
        {"Name": "Pear", "Calories": "100"},
        {"Name": "Pineapple", "Calories": "50"},
        {"Name": "Plums", "Calories": "70"},
        {"Name": "Strawberries", "Calories": "50"},
        {"Name": "Sweet", "Calories": "100"},
        {"Name": "Tangerine", "Calories": "50"},
        {"Name": "Watermelon", "Calories": "80"}]

然后我要求用户输入

item = str(input("Item: ")) 
然后循环遍历字典,这样我就可以输出与水果匹配的卡路里

for fruit in fruits:
    if fruit == item:
        print(fruit["Calories"])

我的问题是为什么这种格式的字典不起作用。我在网上看到解决方案,发现它是不同的,但我的字典结构是基于类视频结构。

python dictionary cs50
5个回答
2
投票

您的

item
包含水果名称。示例中的
fruit
包含对象(例如,
{"Name": "Avocado", "Calories": "50"}
)。他们不可能相等。

此外,如果您打算只使用水果的名称和卡路里,您可以使用地图而不是地图列表,就像这样

{
  "Apple": "130", 
  "Avocado": "50", 
...}

并跳过手动搜索并使用

fruits[item]
获取卡路里


1
投票

您正在将字符串与字典进行比较。您的列表包含字典。然后循环遍历它,并将每个字典与字符串值进行比较。您要检查的是每个字典中的正确值。

if fruit["Name"] == item:

1
投票

根据@Proxygonn或@cafce25的评论(我不确定),我成功地解决了这个问题。感谢您的所有回答!你可以看看:

lists = [
{"fruits": "apple", "calories": "130"},
{"fruits": "avocado", "calories": "50"},
{"fruits": "banana", "calories": "110"},
{"fruits": "cantaloupe", "calories": "50"},
{"fruits": "grapefruit", "calories": "60"},
{"fruits": "grapes", "calories": "90"},
{"fruits": "honeydew melon", "calories": "50"},
{"fruits": "kiwifruit", "calories": "90"},
{"fruits": "lemon", "calories": "15"},
{"fruits": "lime", "calories": "20"},
{"fruits": "nectarine", "calories": "60"},
{"fruits": "orange", "calories": "80"},
{"fruits": "peach", "calories": "60"},
{"fruits": "pear", "calories": "100"},
{"fruits": "pineapple", "calories": "50"},
{"fruits": "plums", "calories": "70"},
{"fruits": "strawberries", "calories": "50"},
{"fruits": "sweet cherries", "calories": "100"},
{"fruits": "tangerine", "calories": "50"},
{"fruits": "watermelon", "calories": "80"},
]

s = input("Item: ").lower().strip()
for m in lists:
    if m["fruits"] in s:
        print("Calories: ",m["calories"])

0
投票

上面的许多答案已经达到了目的,但我是这样做的 -

item = input("Item: ")
print("Calories: ", end = "")
fruits = {
"Apple" : "130",
"Avocado" : "50",
"Banana" : "110",
"Cantaloupe" : "50",
"Grapefruit" : "60",
"Honeydew Melon" : "50",
"Kiwifruit" : "90",
"Lemon" : "15",
"Lime" : "20",
"Nectarine" : "60",
"Orange" : "80",
"Peach" : "60",
"Pear" : "100",
"Pineapple" : "50",
"Plums" : "70",
"Strawberries" : "50",
"Sweet Cherries" : "100",
"Tangerine" : "50",
"Watermelon" : "80"
}

for fruit in fruits:
if fruit == item:
    print(fruits[fruit])

0
投票

定义主函数(): Enter = input("项目:").casefold() 总卡路里(输入)

def 总卡路里(n):

fruits = [
    {"fruit": "apple", "calories": 130},
    {"fruit": "avocado", "calories": 50},
    {"fruit": "kiwifruit", "calories": 90},
    {"fruit": "pear", "calories": 100},
    {"fruit": "sweet cherries", "calories": 100}
]

for fruit in fruits:
    if fruit["fruit"] == n:
        print("Calories:", int(fruit["calories"]))

主要()

© www.soinside.com 2019 - 2024. All rights reserved.