You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何操作嵌套字典提取汇总指定键的对应值

代码问题修正及实现方案

存在的问题

  • 变量命名不统一:你定义的是new_Brunswick,后面写的new_brunswick大小写不一致,同时british_columbia、prince_edward_island等省份的字典未定义,运行会触发NameError
  • 数据结构用错:canada = {xx,xx,xx}这种写法生成的是集合(Set),集合没有items()方法,调用canada.items()会直接报错。如果要存省份信息要么直接用列表,要么用省份名作key的字典。
  • 变量名冲突:sum是Python内置的求和函数,直接用作变量名会覆盖原有功能,建议改用total_pop这类自定义名称。
  • 打印位置错误:print语句写在循环内部,只会输出每次累加的中间值,要拿到最终总和需要放到循环外。

修正后的可运行代码

# 定义所有省份的信息字典
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)
british_columbia = dict(capital="Victoria", largest="Vancouver", population=5214805)
prince_edward_island = dict(capital="Charlottetown", largest="Charlottetown", population=167680)
saskatchewan = dict(capital="Regina", largest="Saskatoon", population=1179844)
alberta = dict(capital="Edmonton", largest="Calgary", population=4464170)
newfoundland_and_labrador = dict(capital="St. John's", largest="St. John's", population=520553)

# 用列表存储所有省份字典
canada_provinces = [ontario, quebec, nova_scotia, new_brunswick, manitoba, british_columbia, prince_edward_island, saskatchewan, alberta, newfoundland_and_labrador]

total_pop = 0
for province in canada_provinces:
    if 'population' in province:
        total_pop += province['population']

print(f"加拿大全国总人口为:{total_pop}")

更简洁的实现

如果不想手动初始化累加变量,可以直接用生成器表达式配合内置sum函数实现,就算部分省份没有population字段也不会报错:

total_pop = sum(province.get('population', 0) for province in canada_provinces)
print(total_pop)

内容的提问来源于stack exchange,提问作者jump

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:06:03