줄 단위로 텍스트 파일을 읽고 사전의 키에 홀수 라인을 할당하고 사전의 값에 짝수 라인을 할당하려면 어떻게해야합니까? 사전에 텍스트 파일 읽기
A
B
C
D
E
F
G
H
이 같은 사전에 이동 :
dict{"A":"B","C":"D","E":"F","G":"H"}
줄 단위로 텍스트 파일을 읽고 사전의 키에 홀수 라인을 할당하고 사전의 값에 짝수 라인을 할당하려면 어떻게해야합니까? 사전에 텍스트 파일 읽기
A
B
C
D
E
F
G
H
이 같은 사전에 이동 :
dict{"A":"B","C":"D","E":"F","G":"H"}
with open(filename, 'r') as f:
d = {}
for line in f:
d[line.strip()] = next(f, '').strip()
참고 : 예를 들어, 내가 어떻게 새로운 선 아래로 구분 된 목록을 만들 수있는 파일이 라인의 홀수가있는 경우 귀하의 마지막 키는 빈 값을 갖습니다. 예외를 던지려면 next(f, '')
을 next(f)
으로 변경하십시오. 다른 기본값 변경을 선호하는 경우 next(f, '')
~ next(f, 'default')
.
또 다른 방법 : 텍스트 파일 라인의 홀수가있는 경우는 마지막 키를 삭제할 것을
with open(filename, 'r') as f:
d = {k.strip():v.strip() for k, v in zip(f, f)}
참고.
from itertools import izip_longest, imap
with open(filename, 'r') as f:
f = imap(str.strip, f)
d = dict(izip_longest(f, f, fillvalue='default'))
니스. 방금 "iterables의 왼쪽에서 오른쪽으로의 평가 순서가 보장된다"는 것을 배웠기 때문에,''zip()' '이 포함 된 dict comprehension은 똑같은 iterable을 잘 통과합니다. [zip() docs.] (https://docs.python.org/3/library/functions.html#zip) –
사실, 당신은 단지 그것을 통해 파일 및 루프에서 읽을 수있다 : 라인의 홀수 할 수있을 때
마지막 키를 유지합니다. 라인이 홀수 인 경우 라인을 키로 사용하여 사전에 추가하는 경우에도 값으로 기억하십시오.import sys
import numpy as np
fn=sys.argv[1]
d={}
with open(fn,'rb') as f:
for i,line in enumerate(f):
if np.mod(i+1,2)==0:
d[lastVal]=line.replace('\n','')
else:
lastVal=line.replace('\n','')
print d
지금까지 어떤 코드가 있습니까? – dhke