한 줄씩 파일을 읽고 한 줄의 문자열이 내 사전에서 같은 줄의 다른 문자열과 함께 있도록 허용되는지 각 줄을 확인하고 싶습니다. 나는이 코드를 생각 해냈다
dic={'ALA':['N','H','CA','HA','CB','HB1','HB2','HB3','C','O'],
'GLY':['N','H','CA','HA2','HA3','C','O'],
(...)
}
fin=open('file.pdb','r')
for line in fin:
atom=line[12:16].strip()
resi=line[17:20].strip()
if atom not in dic[resi]:
print(line)
그러나 그것은 나에게 준다 :
Traceback (most recent call last):
File "names.py", line 38, in <module>
if atom not in dic[resi]:
KeyError: '3.2'
그래서 이것은 작동하지 않습니다. 이상하게도 dic [resi]를 dic [ 'ALA']와 같은 것으로 대체하면 잘 작동합니다. 내가 여기서 뭘 잘못하고 있니?
문제는 라인 중 하나 에 3.2
대한 값을 얻고 dic에서 유효한 키가 아니기 resi
때문에 3.2
예외가 발생한다는 것입니다.
for line in fin:
atom=line[12:16].strip()
resi=line[17:20].strip()
if resi in dic and atom not in dic[resi]:
print(line)
편집하다:
for line in fin:
atom=line[12:16].strip()
resi=line[17:20].strip()
if resi in dic.keys() and atom not in dic[resi]:
print(line)
n
키워드를 사용하는 첫 번째 방법 은 사전에 키의 존재를 아는 가장 좋은 방법입니다. 두 번째 방법은 사전의 키를 가져온 후 선형 검색을 수행하는 동안 O (1) (해싱 사용)에서 실행됩니다.
두 방법 모두 단락이 사용되기 때문에 첫 번째 조건이 실패하면 두 번째 조건이 평가되지 않습니다. 또는 try..except
block을 사용하여 예외를 복구 할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다