我尝试通读了许多类似的问题(这似乎最接近:Python sum dict values based on keys),但仍在努力回答下面的以下问题。归结为基础
我有以下 3 个以列表为键的字典:
{'milk': ['gallons', 5, 10, 50]}
{'eggs': ['cartons', 5, 2, 10]}
{'bacon': ['packages', 5, 7, 35]}
我希望能够总结每个嵌套列表的最后一个值,并有预期的,单值的95
显示在屏幕上。
我已经看到了涉及 lambda 的类似问题的答案,但我知道必须有一种方法可以通过遍历列表来做到这一点。我已经看到sum和Counter的使用,并且愿意接受任何解释。先感谢您。
更新/添加上下文
感谢那些已经做出回应的人。我意识到可能需要更多上下文来回答这个问题。
这些条目来自这个类:
class GroceryCart(dict):
def __init__(self):
self = {}
def addToCart(self, item, units, quantity, price):
item_total = quantity*price
self.update({item:[units, quantity, price, item_total]})
def returnCart(self):
return self
my_cart = GroceryCart()
这就是您获得信息的时髦结构的地方。我在下面尝试了@ggorlan 的回复,但遇到了关于没有使用 str 值的回溯错误.values()
Traceback (most recent call last):
File "grocery_store.py", line 156, in <module>
total = sum(sum(y[-1] for y in x.values()) for x in my_cart)
File "grocery_store.py", line 156, in <genexpr>
total = sum(sum(y[-1] for y in x.values()) for x in my_cart)
AttributeError: 'str' object has no attribute 'values'
试试这个:
foods = {
'milk': ['gallons', 5, 10, 50],
'eggs': ['cartons', 5, 2, 10],
'bacon': ['packages', 5, 7, 35]
}
s = sum([item[-1] for item in foods.values()])
该s
会95。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句