【发布时间】:2021-12-23 12:19:32
【问题描述】:
我的字典格式可能有误(我第一次这样做)
我有一个包含正确 ID 的每个省份的字典,并将其添加到值“加拿大”。我正在尝试在嵌套字典中添加所有省份的人口
ontario = dict(capital="Toronto", largest="Toronto", population=14826276)
quebec = dict(capital="Quebec City", largest="Montreal", population=8604495)
nova_Scotia = dict(capital="Halifax", largest='Halifax', population=992055)
new_Brunswick = dict(capital="Fredricton", largest='Moncton', population=789225)
manitoba = dict(capital="Winnipeg", largest="Winnipeg", population=1383765)
canada = {ontario, quebec, nova_Scotia, new_brunswick, manitoba, british_columbia, prince_edward_island, saskatchewan, alberta, newfoundland_and_labrador}
for key, value in canada.items():
if value and 'population' in value.keys():
# Adding all values of population to receive total population of canada
sum += value['population']
print(sum)
再次提前感谢。
【问题讨论】:
-
您是否遇到错误?如果是这样,有什么错误?或者,什么不符合您的预期?
-
我认为这是最简单的方法...
sum_ = sum(map(lambda p: p["population"], canada))。仅供参考,你循环它的方式是错误的,因为canada这里是set而不是dictionary。 -
@enaielei 啊,我明白了。我认为这就是我遇到的问题,我得到一个 TypeError: unhasable type。我如何将此列表转换为字典?
-
@jump 为什么要将它作为
dict?例如,您可以以canada["ontario"]["population"]的身份访问它吗?如果是这种情况,那么请像您在您的省份那样做...canada = dict(ontario=ontario)。另外,如果你错过了,获得总和的最简单方法是通过我使用sum函数提供的代码。 -
您的
canada不是dictionary而是set()。你需要canada = {'regions': [ontario, quebec, ...]}或canada = {"Ontario": ontarion, "Quebec": quebec}然后你可以(在for-loop 之后)canada["total_population"] = sum
标签: python function dictionary for-loop nested