У меня есть текстовый файл, состоящий из нескольких строк. Каждая строка имеет несколько значений строк и целых чисел. Пример текста заключается в следующем:Python: проверка совпадающих значений в текстовом файле
>|P1|Pa|,1,2,7,4
>|P2|Pa|,7,9,0,3
>|Pa|P1|,5,5,7,2
>|Pa|P2|,2,3,8,4
>|Pb|Pa|,8,4,3,1
Значение между вертикальными линиями, такими как P1 и Па, является идентификатором для каждой строки. Я хочу написать код, который переписывает взаимные линии с одинаковыми идентификаторами и присваивает им одинаковый номер. Таким образом, первые и третьи строки должны иметь последнее значение 1. Выход программы должен быть следующим:
>|P1|Pa|,1,2,7,4,1
>|P2|Pa|,7,9,0,3,2
>|Pa|P1|,5,5,7,2,1
>|Pa|P2|,2,3,8,4,2
>|Pb|Pa|,8,4,3,1,3
Чтобы решить эту проблему, я создал словарь, чтобы иметь идентификаторы в качестве ключей и назначаются номера в качестве значений. Однако я не мог правильно присвоить числа взаимным линиям. Следующий код:
import sys
h=(sys.argv[1])
q_d={}
count=0
with open(h)as f:
for line in f:
if line.startswith('>'):
count=count+1
line=line.strip('\n')
ID=line.split('|')
q=ID[1]
s=ID[2]
q_d[str(q)]=count
if q_d.has_key(q):
print line+','+str(q_d[q])
elif q_d.has_key(s):
print line+','+str(q_d[s])
А вот выход я получаю:
>|P1|Pa|,1,2,7,4,1
>|P2|Pa|,7,9,0,3,2
>|Pa|P1|,5,5,7,2,3
>|Pa|P2|,2,3,8,4,4
Как назначить одинаковое количество взаимных линий в словаре?
Вместо использования 'elif' использовать' и' в одном '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. Или, как предлагает qwr, сделайте ключ кортежем. –