목록 사전을 뒤집을 필요가 있습니다. 정확하게 영어로 설명하는 법을 모르므로 여기에 원하는 코드가 있습니다. 너무 많은 메모리가 필요합니다.in-place dictionary inversion of Python
def invert(oldDict):
invertedDict = {}
for key,valuelist in oldDict.iteritems():
for value in valuelist:
try:
entry = invertedDict[value]
if key not in entry:
entry.append(key)
except KeyError:
invertedDict[value] = [key]
return invertedDict
원본은 목록을 담은 것이며, 그 결과는 목록을 의미합니다. 이것은 그것을 "반전"시킨다.
test = {}
test[1] = [1999,2000,2001]
test[2] = [440,441]
test[3] = [440,2000]
print invert(test)
이 제공이 현재 위치에서 할 수 있으면 현재의 내 전략은 내가 일하고 사전에 내 컴퓨터에 물리적 메모리의 양을 초과하기 때문에
{2000: [1, 3], 2001: [1], 440: [2, 3], 441: [2], 1999: [1]}
내가 알 필요가 와. 발전기로 할 수있는 방법을 생각해 볼 수 있습니까?
'shelve'을 사용해 보셨습니까? –
난 선반 몰랐어, 고마워. 나는 오래된 사전이나 새로운 사전이 모두 작동 할 필요가 없다고 생각한다. – Nathan
shelve는 문자열 키에서만 작동합니다. –