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

如何使用Python字典构造设施选址问题所需的距离矩阵

需求实现说明

你的需求完全可以实现,Python字典支持字符串类型的键,你要求的行首元素+表头字段的拼接格式完全符合键的使用规则。


基础实现方案(无第三方依赖)

你只需要先整理好两类基础数据:

  • 表头字段列表:所有SP_开头的站点名称
  • 行数据列表:每一组第一个元素为地点名,后续元素为对应表头的距离值

示例代码如下:

# 示例基础数据,实际使用时替换为你自己的真实数据
headers = ["SP_Andrimont", "SP_Pepinster", "SP_Other"]
rows = [
    ["Spa", 12275, 10626.81, 8900],
    ["OtherLoc", 13400, 9870, 7650.2]
]

distance_dict = {}
for row in rows:
    loc_name = row[0]
    # 遍历表头和对应距离
    for idx, sp_name in enumerate(headers):
        # 拼接生成键
        key = loc_name + sp_name
        # 存入距离值,row[0]是地点名,所以距离从索引1开始取
        distance_dict[key] = row[idx + 1]

# 调用测试
print(distance_dict["SpaSP_Andrimont"]) # 输出 12275
print(distance_dict["SpaSP_Pepinster"]) # 输出 10626.81

简化实现方案(适合从文件读取原始矩阵)

如果你的距离矩阵是存储在csv/Excel文件中,可以用pandas库快速处理,代码更简洁:

import pandas as pd

# 读取csv文件,index_col=0指定第一列为行索引(即你的地点名)
df = pd.read_csv("你的距离矩阵文件路径.csv", index_col=0)

distance_dict = {}
for loc_name, row_data in df.iterrows():
    for sp_name, distance in row_data.items():
        distance_dict[loc_name + sp_name] = distance

可选替代方案

如果担心字符串拼接可能出现极端重名情况,可以用元组作为字典的键,可读性和唯一性更好:

# 生成键的部分改为元组
key = (loc_name, sp_name)
# 调用时格式如下
print(distance_dict[("Spa", "SP_Andrimont")])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:48:03