Dict中封装的OrderedDict

时间:2016-11-07 13:23:24

标签: python python-2.7 dictionary ordereddictionary

OrderedDict封装到dict时,会出现OrderedDict未更新的问题。

目标是以形式获得一个dictonary:

{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

1 个答案:

答案 0 :(得分:0)

问题在于读者只能被消费一次(感谢@jonrsharpe)。

        $upload->title = Auth::User()->id;
        $current = Carbon::now();
        $file = $request->file('file');
        $file->move(storage_path(). '/', $file->getClientOriginalName());
        $upload->name = $file->getClientOriginalName().$current;
    }