创建一个二维字典,可从中调用单个值

2024-04-29 02:22:01 发布

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

我在这里和那里混淆了几个词,我的错。这个例子应该能使意图比现在更清楚一点。在

示例: 我的.csv文件名为“文件.csv“:

T2Y;Brad;0001
K5;Jan;0002
T21;En;3838
T22;aps;3804
T11;Jyke;3957
T08;John;3825
K05;Tim;0001

当你这样调用我的函数时:

^{pr2}$

您可以调用您要求的值,如下所示:

>>> dict['Brad']['code']
'T2Y'
>>> dict['John']['name']
'John'

我所做的似乎是通过读取.csv文件来创建第一个字典,但是我无法创建一个嵌套字典,它可以按照我的示例所示的方式调用。我试着在下面的漫谈中更深入一点。在

下面是我当前代码如何输出信息,可能是冗余信息

我当前的代码有点混乱,因为我试图动态地将它组成一个嵌套的字典,但是它现在做的正确的是它打开并读取.csv文件,它用“;”分隔行,并使用名称作为键为每行生成一个可调用的字典。但是,当前的障碍是,我只能用一个键,即名称来调用,它将整行作为字典或类似于该部分的内容返回。是这样的:

>>> dict = function("file.csv")
>>> dict['Brad']
'T2Y;Brad;0001\n'

如果我尝试在name键之后添加另一个键,代码将停止并返回错误代码:

TypeError: list indices must be integers or slices, not str

Tags: 文件csv代码name名称信息示例字典
1条回答
网友
1楼 · 发布于 2024-04-29 02:22:01

如前所述,这是一个非常简单的问题:您想要用CSV文件中的信息创建一个嵌套字典。由于您没有指定第3列是什么,所以我只将其标记为id,并使用一个字符串。我还假设文件中每个名称只包含一行:如果没有,则使用最新的一行。在

import csv

user_info = {}
with open('data.txt') as csvfile:
    data = csv.reader(csvfile, delimiter=';')
    for code, name, id in data:
        user_info[name] = { 'code': code, 'name': name, 'id': id }

print (user_info)

这将打印:

^{pr2}$

相关问题 更多 >