создайте distance_matrix с помощью словарей python

#python #dictionary #linear-programming #distance-matrix

Вопрос:

Я работаю над моделью проблемы местоположения объекта и хотел бы создать словарь, содержащий эту матрицу расстояний,

distance_matrix

Я хочу, чтобы ключи соответствовали комбинации между первым элементом каждой строки и заголовком, как это (вроде) «Spa» «SP_Andrimont» : 12275, «Spa» «SP_Pepinster» : 10626,81,…

Поэтому мне было интересно, возможно ли это ? Если да, то как бы вы это сделали ? Если нет, то каковы альтернативы? Новичок в python и программировании здесь, так что любая помощь будет очень признательна.

спасибо, ребята

Комментарии:

1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Ответ №1:

Это не очень чисто, но я хотел предоставить опцию, которая не использует внешние библиотеки. Вот содержание 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() метода.

Комментарии:

1. Большое спасибо, чувак, это сработало. Благослови тебя и твой род на века вперед!!