python - 如何将嵌套for循环的结果存储为python中的嵌套字典?
问题描述
from geopy.distance import geodesic
europe = {
'Berlin': [52.5170365, 13.3888599],
'Vienna': [48.2083537, 16.3725042],
'Madrid': [40.4167047, -3.7035825]
}
usa = {
'Boston' : [42.3601, -71.0589],
'LA' : [34.0522, -118.2437],
'Chicago' : [41.878, -87.6298]
}
dist = {}
for key_eu, city_eu in europe.items():
for key_us, city_us in usa.items():
dist[key_us] = geodesic(city_eu, city_us).km
dist
输出为:{'波士顿':5484.653258486435,'LA':9383.686903608652,'芝加哥':6741.855597482226}
我想将其保存如下:
dist = {'Berlin': {'Boston' : 6096.945, 'LA' : 9331.657, 'Chicago' : 7102.591},
'Vienna': {'Boston' : 6508.405, 'LA' : 9841.482, 'Chicago' : 7560.970},
'Madrid': {'Boston' : 5484.65, 'LA' : 9383.686, 'Chicago' : 6741.855}}
解决方案
from geopy.distance import geodesic
from collections import defaultdict
from pprint import PrettyPrinter
europe = {
'Berlin': [52.5170365, 13.3888599],
'Vienna': [48.2083537, 16.3725042],
'Madrid': [40.4167047, -3.7035825]
}
usa = {
'Boston': [42.3601, -71.0589],
'LA': [34.0522, -118.2437],
'Chicago': [41.878, -87.6298]
}
dist = defaultdict(dict)
for key_eu, city_eu in europe.items():
for key_us, city_us in usa.items():
dist[key_eu][key_us] = round(geodesic(city_eu, city_us).km, 3)
dist = dict(dist)
PrettyPrinter(sort_dicts=False).pprint(dist)
输出:
{'Berlin': {'Boston': 6096.945, 'LA': 9331.657, 'Chicago': 7102.591},
'Vienna': {'Boston': 6508.405, 'LA': 9841.482, 'Chicago': 7560.97},
'Madrid': {'Boston': 5484.653, 'LA': 9383.687, 'Chicago': 6741.856}}
推荐阅读
- javascript - 检查商店是否营业。MySQL node.js 业务逻辑
- angular - 垫日期开始日期结束日期验证角度8
- c++ - 如何使用 C++ 中的给定信息计算单身或已婚人士的税款
- visual-studio-code - 如何防止 VSCode 自动添加新行和缩进
- python-3.x - KeyError: 'axes.color_cycle 不是有效的 rc 参数(有关有效参数的列表,请参见 rcParams.keys())'
- php - 为什么 PHP 的 REQUEST 和 GET 会突然停止工作?
- javascript - 范围从 n 在两个方向
- javascript - 映射单选选项未按预期工作
- arrays - 合并列中的两个或多个“列表”?
- python - 无法点击下一页进行网页抓取