다음과 같은 모양의 CSV 파일이 있습니다. 이것은 1980 년부터 2014 년까지 4 개국의 전기 소비를 보여줍니다. 중첩 된 사전을 만들려고합니다. 예를 들어 consumption['United States'][1980]
이 올바른 값을 반환합니다. . 내가 정수 년의 목록과 배열을 가지고 있고이 같은 사전을 만들려고 해요 :루프 내 중첩 된 사전
file = open('power dataset.csv', 'r')
years = list(range(1980, 2015))
consumption = {}
generation = {}
generation = False
for line in file:
if("Nuclear" in line):
break
split = line.split(",")
if split[0] == "Generation":
generation = True
if "Egypt" == split[0] or split[0] == "Germany" or split[0] == "Netherlands" or split[0] == "United States":
values = split[2:]
if not generation:
i = 0
for year in years:
country = split[0]
consumption[country] = {year: values[i]}
i = i+1
. 내가 겪고있는 문제는 사전이 오직 1 년과 하나의 값 (마지막 것)을 포함한다는 것입니다. 따라서 consumption['United States'][1980]
과 같은 것을 인쇄하려고하면 사전에 1980 년에 항목이 없기 때문에 2014 년에만 오류가 발생합니다.
나는 아주 간단한 것을 놓치고있는 것처럼 느껴지지만 그 위에는 내 손가락을 대지 못합니다. .
Here은 전체 CSV 파일입니다.
for year in years:
consumption[country] = {year: values[i]}
당신은 루프의 각 반복에 consumption[country]
의 이전 값을 덮어 쓰기 :
'split','country' 및'consumption'을 어떻게 선언하는지 보지 않고는 도울 수 없습니다. – Adirio
더 많은 코드를 게시했습니다. – ninesalt
팬더를 사용하지 않는 특별한 이유가 있습니까? 그게 훨씬 더 적절할거야 –