При инкапсуляции OrderedDict
в dict
возникает проблема, при которой OrderedDict
не обновляется.Encapsulated OrderedDict in a Dict
Цель состоит в том, чтобы получить справочник с формой:
{name1: OrderedDict({year1:amount,year2:amount,...}), name2: OrderedDict({year1:amount,year2:amount,...})}
Однако после инициализации первого temp_ord
, он далее не обновляется и поэтому пары года сумма одинаковы для каждого имени после первой ,
CSV-структура в столбцах: название года номер. Я не уверен, что это ошибка цикла, или из-за инкапсуляции dicts.
import csv
from collections import OrderedDict
def plot_names(file_name, names):
temp_dict = {}
temp_ord = OrderedDict({})
with open(file_name) as csvfile:
reader = csv.DictReader(csvfile)
for name in names:
for row in reader:
if name == row["name"]:
temp_ord[row["year"]] = row["number"]
temp_dict[name] = temp_ord
return temp_dict
Формат данных:
year name gender number /n 1993 Abarna f 1 /n 1993 Abetare f 1 /n 1993 Abir f 1
Вы можете показать свои данные? –
Обновлено. Вы видите все * последние * данные, потому что ** все они ссылаются на один и тот же объект **. Переместить 'temp_ord = OrderedDict()' (дополнительный словарь не нужен) * внутри цикла *. – jonrsharpe
@jonrsharpe, в каком цикле точно вы могли бы установить фиксированные петли? – MtSummerbreeze