使用 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()
方法缩短此过程。
我正在研究设施位置问题模型,我想创建一个包含此距离矩阵的字典,
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()
方法缩短此过程。