【问题标题】:Iterating through dictionaries and Accumulation遍历字典和累积
【发布时间】:2019-06-28 06:04:44
【问题描述】:

目前,我正在尝试在嵌套在字典中的字典中累积值以用于家庭作业。

a = {
    "Tennis Balls": {
        "User Rating": 15,
        "Available Colors": 5,
        "Location": "Puppy Mart"
    }
}
b = {
    "Squeaky Toy": {
        "User Rating": 48,
        "Available Colors": 3,
        "Location": "Pooch Shop"
    }
}

c = {
    "Stick": {
        "User Rating": 32,
        "Available Colors": 4,
        "Location": "Pooch Shop"
    }
}
d = {
    "Old Shoe": {
        "User Rating": 13,
        "Available Colors": 2,
        "Location": "Puppy Mart"
    }
}
e = {
    "Stuffed Animal": {
        "User Rating": 14,
        "Available Colors": 7,
        "Location": "Dog Express"
    }
}
puppy_toys = {"Toys": [a, b, c, d, e]}

total_user_ratings = 0

for toy in puppy_toys["Toys"]:

    # insert your own code

    individual_user_rating = puppy_toys["Toys"][toy]["User Rating"]
    total_user_ratings += individual_user_rating

print(total_user_ratings)

我必须用一行代码填写# your line here,这将允许for循环遍历字典puppy_toys并提取位于“Pooch Shop”的玩具的用户评分总数,然后存储变量total_user_ratings 中的总数,但如下所示的我的代码行似乎不起作用:

if["Location"] = "Pooch Shop":

感谢您的帮助!

【问题讨论】:

  • 确保给定代码的缩进是正确的。目前,它是无效代码。此外,将 ``` 放在代码前后以避免缩进的麻烦,如here 所述。此外,您的 puppy_toys 结构无效。确保所有括号都正确。
  • “似乎不起作用”不是很具有描述性。因为这是作业,我不会为你解决。相反,发布错误消息/不正确的行为是什么,并告诉我们您的想法是什么以及您不理解什么。
  • python 中的相等运算符是==,这可能就是您想要的。 ["Location"] 也不能紧跟在 if 之后,它需要引用一些东西。查看下面的一行以了解它的外观。而不是用户评分,您对 Loaction 感兴趣............

标签: python python-3.x dictionary


【解决方案1】:

好吧,玩了一会儿之后,我想你想通过 Location 的名称来获得用户评分的总和,所以,你实际上有一个带有列表的字典,如果我错了,请纠正我,所以你只需要循环它并获取如下值:

a = {
    "Tennis Balls": {
        "User Rating": 15,
        "Available Colors": 5,
        "Location": "Puppy Mart"
    }
}
b = {
    "Squeaky Toy": {
        "User Rating": 48,
        "Available Colors": 3,
        "Location": "Pooch Shop"
    }
}

c = {
    "Stick": {
        "User Rating": 32,
        "Available Colors": 4,
        "Location": "Pooch Shop"
    }
}
d = {
    "Old Shoe": {
        "User Rating": 13,
        "Available Colors": 2,
        "Location": "Puppy Mart"
    }
}
e = {
    "Stuffed Animal": {
        "User Rating": 14,
        "Available Colors": 7,
        "Location": "Dog Express"
    }
}
puppy_toys = {"Toys": [a, b, c, d, e]}

total_user_ratings = 0

for toy in puppy_toys["Toys"]:
    shop = list(toy.values())[0]
    if (shop["Location"] == "Pooch Shop"):
        individual_user_rating = shop["User Rating"]
        total_user_ratings += individual_user_rating

print(total_user_ratings) 

【讨论】:

  • 知道了!用“If toy[“Location”] == “Pooch Shop:”
  • @Tabla841 太棒了,我一直喜欢提供帮助
【解决方案2】:

您的代码行有两个主要问题。让我们回顾一下:

if["Location"] = "Pooch Shop":

首先,您尝试在两个表达式之间进行比较。这是在 python 中使用相等运算符 == 完成的。单个= 通常代表赋值。

例如:

>>> a = 5
>>> print(a)
5
>>> print(a == 5)  # "is a equal to 5?"
True

第二个问题是if["Location"]

在 Python 中,方括号通常用作“getter”。一种访问对象内部元素的方法(如列表或字典)。

例如:

>>> a = ["x", "y", "z"]
>>> print(a[1])
y
>>> b = {"name": "Tomer", "age": 29}
>>> print(b["name"])
Tomer

所以你会希望["Location"] 出现在某个对象之后。

在下一行代码中提示应该是什么:

individual_user_rating = puppy_toys["Toys"][toy]["User Rating"]

【讨论】:

    猜你喜欢
    • 2013-12-21
    • 2017-09-16
    • 2018-08-22
    • 1970-01-01
    • 2019-09-24
    • 2019-05-05
    相关资源
    最近更新 更多