使用 python 个字典创建 distance_matrix

create distance_matrix using python dictionaries

我正在研究设施位置问题模型,我想创建一个包含此距离矩阵的字典,

distance_matrix

我希望键对应于每一行的第一个元素和 header 之间的组合,就像这样(有点)“Spa”+“SP_Andrimont”:12275,“Spa” + "SP_Pepinster" : 10626,81,...

所以我想知道,这可能吗?如果是,你会怎么做?如果没有,有哪些替代方案? python 和此处编程的新手,如有任何帮助,我们将不胜感激。

谢谢大家

它不是很干净,但我想提供一个不使用外部库的选项。以下是test_csv的内容:

city;SP_A;SP_B
A;5;2
B;6;3
C;2;7
D;7;3

这是代码:

import csv

# Open csv file and add rows to list
with open('test_csv.csv', newline='') as file:
    rows = [row for row in csv.reader(file, delimiter=';')]

# Extract headers and indices (locations)
locations_a = [row[0] for row in rows[1:]]
locations_b = [header for header in rows[0][1:]]

# Create dict distance matrix
dist_matrix = {}
for i, loc_a in enumerate(locations_a):
    dist_matrix[loc_a] = {}
    for j, loc_b in enumerate(locations_b):
        dist_matrix[loc_a][loc_b] = rows[i+1][j+1]

# Print matrix
print(dist_matrix)
            
# Test location pair
print(dist_matrix['A']['SP_B'])

输出:

{'A': {'SP_A': '5', 'SP_B': '2'}, 'B': {'SP_A': '6', 'SP_B': '3'}, 'C': {'SP_A': '2', 'SP_B': '7'}, 'D': {'SP_A': '7', 'SP_B': '3'}}

2

如果需要,您可以使用 pandas 库及其 DataFrame.to_dict() 方法缩短此过程。