파일을 열고 "myfile"이라고 이름을 지정했습니다. 두 개의 다른 사전을 만들고 싶지만 파일이 나와 닫히고 첫 번째 사전에 첫 번째 사전을 만들었 기 때문에 가정합니다. 히스토그램에 대한 빈 사전을 얻었으므로 myfile을 x로 사용하고 두 번째 루프에 대해 f 대신 x를 사용하여이 "ValueError : 닫힌 파일에 대한 I/O 작업"을 얻었습니다.파일에서 두 개의 사전을 만드는 동안 파일을 열어두기
또한, 차이가 나는 경우 클래스의 함수에서이 작업을 수행하고 있습니다.
누구나이 작업을 수행하는 방법을 알고 있습니까?
d = {}
d2 ={}
with myfile as f:
next(f)
for line in f:
k, v = line.split()
d[int(k)] = int(v)
next(f)
for line in f:
items = line.split()
key, values = int(items[0]), items[1:]
d2.setdefault(key, []).extend(values)
hist = defaultdict(list)
for key, values in d2.iteritems():
hist[len(values)].append(key)
histogram = dict(hist)
왜 두 개의 루프가 필요합니까? 한번'f'를 반복 할 수 없습니까? – ForeverWintr
seek()을 사용하여 파일의 처음으로 현재 위치를 다시 설정할 수 있습니다. –