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

如何将含重复元素的国家列表与城市列表构建为多值字典

如何将对应国家和城市列表转换为国家-城市列表字典

你需要将两个长度一致的列表(含重复元素的国家列表、对应位置的城市列表)转换为以国家为键、对应城市列表为值的字典,以下是问题分析和解决方案:

你的代码存在的问题

  • 字符串未加引号:USA、Chicago等标识符未用引号包裹,会被Python视为变量而非字符串,运行时会报错(若未定义这些变量)
  • 嵌套循环逻辑错误:外层遍历国家、内层遍历所有城市,会导致每个国家与所有城市错误绑定,完全不符合两个列表的对应关系
  • 字典结构设计错误:目标字典应以国家为键,而非用'Countries'和'Cities'作为顶层键

正确实现方法

方法1:基础循环+zip配对

countries_list = ['USA', 'USA', 'CHINA', 'CANADA', 'CANADA']
cities_list = ['Chicago', 'NY', 'Beijing', 'Vancouver', 'Toronto']

result = {}
# 用zip将两个列表的对应元素一一配对
for country, city in zip(countries_list, cities_list):
    # 若国家不在字典中,先创建空列表
    if country not in result:
        result[country] = []
    # 将对应城市添加到列表中
    result[country].append(city)

print(result)

方法2:使用collections.defaultdict(更简洁)

from collections import defaultdict

countries_list = ['USA', 'USA', 'CHINA', 'CANADA', 'CANADA']
cities_list = ['Chicago', 'NY', 'Beijing', 'Vancouver', 'Toronto']

# defaultdict会自动为不存在的键创建空列表
result = defaultdict(list)
for country, city in zip(countries_list, cities_list):
    result[country].append(city)

# 如需转为普通字典,可使用dict(result)
print(dict(result))

输出结果

两种方法都会得到你想要的字典:

{'USA': ['Chicago', 'NY'], 'CHINA': ['Beijing'], 'CANADA': ['Vancouver', 'Toronto']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:44:16