无法在字典中添加所有值(尝试了其他方法,但不起作用)

2024-06-23 19:49:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这里彻底搜索了代码,以总结我字典中的所有值,但它们并没有真正起作用。你知道吗

hostel = {
    "Berlin": [18.0, 18.0],
    "Hamburg": [17.65, 17.65],
    "Cochem": [30],
    "Munich": [18.0, 18.0],
    "Salzburg": [18.0, 18.0],
    "Vienna": [19.0, 19.0, 19.0, 19.0],
    "Budapest": [18.0, 18.0]
}

我试过了(酒店价值观())和sum(d.itervalues()),但出现以下消息:

回溯(最近一次呼叫): 文件“”,第16行,in TypeError:不支持+:“int”和“list”的操作数类型

我的python版本在3之前。我很容易写

sum(hostel["Berlin"]) + sum(hostel["Hamburg"]) + .....

把一切加起来,但那看起来很愚蠢。你知道吗

感谢您的帮助!你知道吗


Tags: 代码消息字典酒店sumberlin价值观itervalues
3条回答

这个怎么样:

>>> sum(sum(x) for x in hostel.itervalues())
285.3

(sum(x) for x in hostel.itervalues())返回包含所有列表之和的生成器表达式:

>>> gen = (sum(x) for x in hostel.itervalues())
>>> gen
<generator object <genexpr> at 0xa51e644>

genexp的内容:

>>> list(gen)
[36.0, 36.0, 35.3, 36.0, 36.0, 30, 76.0]

现在我们把genexp传给sum,它会把这些数字加起来:

#due to list call above the generator got consumed, so we've to create a new generator again
>>> gen = (sum(x) for x in hostel.itervalues())
>>> sum(gen)
285.3
>>> from itertools import chain
>>> sum(chain.from_iterable(hostel.itervalues()))
285.3

试试这个:

sum([sum(x) for x in hostel.values()])

相关问题 更多 >

    热门问题