封装在Di中的OrderedDict

2024-10-01 13:44:45 发布

您现在位置:Python中文网/ 问答频道 /正文

当将OrderedDict封装到dict中时,会出现OrderedDict未更新的问题。你知道吗

目的是通过以下形式获得口述:

{name1: OrderedDict( {year1:amount,year2:amount,...}), name2: OrderedDict( {year1:amount,year2:amount,...})}

但是,在初始化第一个temp_ord之后,它不会进一步更新,因此第一个名称之后的每个名称的年金额对都是相同的。你知道吗

CSV结构以列形式显示:name year number。我不确定这是一个循环错误还是因为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

Tags: nameimport名称numbernamesamountyeartemp
1条回答
网友
1楼 · 发布于 2024-10-01 13:44:45

问题是一个阅读器只能被消费一次(谢谢@jornsharpe)。你知道吗

import csv
from collections import OrderedDict

def plot_names(file_name, names):
    temp_dict = {}
    for name in names:
            with open(file_name) as csvfile:
                reader = csv.DictReader(csvfile)
                temp_ord = OrderedDict({})
                for row in reader:
                    if name == row["name"]:
                        temp_ord[row["year"]] = row["number"]
                temp_dict[name] = temp_ord
    return temp_dict

相关问题 更多 >