У меня есть два файла, у которых есть ключ, а у другого есть как ключ, так и значение. Я должен сопоставить ключ файла и вытащить соответствующее значение из файла два. Когда весь ключ и значение находятся в формате простого столбца, я могу получить ключ и значение для нового файла очень хорошо. Но я не понимаю, как получить результат, когда значение находится в типе set/array.Dict и List Manipulation Python
Входной один в формате колонки:
5216 3911 2 761.00
2503 1417 13 102866.00
5570 50 2 3718.00
5391 1534 3 11958.00
5015 4078 1 817.00
3430 299 1 5119.00
4504 3369 2 3218.00
4069 4020 2 17854.00
5164 4163 1 107.00
3589 3026 1 7363.00
Входной два в формате колонки. Они являются ключевыми, как пара, т.е. col[0]
и col[1]
и являются ключевыми парами
5391 1534
5015 4078
3430 299
4504 3369
Вывод для приведенного выше входного случае, который является правильным для меня
5391 1534 3 11958.00
5015 4078 1 817.00
3430 299 1 5119.00
4504 3369 2 3218.00
Программа
from collections import defaultdict
edges = {}
with open('Input_1.txt', 'r') as edge_data:
for row in edge_data:
col = row.strip().split()
edges[col[0], col[1]] = col[2], col[3]
#Then to do the queries, read through the first file and print out the matches:
with open('Input_2', 'r') as classified_data:
with open ('Output', 'w') as outfile:
for row in classified_data:
a,b = row.strip().split()
c = edges.get((a,b), edges.get((b,a)))
#print a,b, edges.get((a,b), edges.get((b,a)))
#print a,b,c
outfile.write("%s %s %s\n" % (a,b,c))
выше программа отлично подходит для вышеупомянутых типов ввода. Но я понятия не имею, как получить операции для следующих данных.
Я понимаю, что я должен изменить это утверждение из вышеуказанной программы, но я не понимаю, к чему это следует изменить?
edges[col[0], col[1]] = col[2], col[3]
Новый Входной один
('3350', '2542') [6089.0, 4315.0]
('2655', '1411') [559.0, 1220.0, 166.0, 256.0, 146.0, 528.0, 1902.0, 880.0, 2317.0, 2868.0]
('4212', '1613') [150.0, 14184.0, 4249.0, 1250.0, 10138.0, 4281.0, 2846.0, 2205.0, 1651.0, 335.0, 5233.0, 149.0, 6816.0]
('4750', '2247') [3089.0]
('5305', '3341') [13122.0]
New Input два Они являются ключевыми, как пара, т.е. col[0]
и col[1]
как являются ключевыми парами
3350 2542
4750 2247
5305 3341
Ожидаемый выход
3350 2542 6089.0
3350 2542 4315.0
4750 2247 3089.0
5305 3341 13122.0
Каков реальный выход? –
@TimCastelijns Включено несколько деталей. –
Запрос всем, если вы не понимаете, или если вы не хотите отвечать, пожалуйста, не беспокойтесь, но по крайней мере не ставьте неверные/закрытые флаги. Возможно, это не важно для вас, но решение для меня действительно важно для меня. –