Python 将csv文件保存到字典中的数组

Python 将csv文件保存到字典中的数组,python,list,csv,dictionary,Python,List,Csv,Dictionary,我有一个包含以下数据的csv文件: Sensor 1;; x;o;o o;x;x x;x;o Sensor 2;; o;x;o x;x;o o;o;o Sensor 3;; x;o;x x;x;o x;x;x 程序应该做的是询问您想要哪个传感器,并返回传感器名称,并在字典中以数组形式显示路径。例如: Sensor 1 : press 1 Sensor 2 : press 2 Sensor 3 : press 3 {Sensor 1: [[x,o,o],[o,x,x],[x,x,o]]} 这

我有一个包含以下数据的csv文件:

Sensor 1;;
x;o;o
o;x;x
x;x;o
Sensor 2;;
o;x;o
x;x;o
o;o;o
Sensor 3;;
x;o;x
x;x;o
x;x;x
程序应该做的是询问您想要哪个传感器,并返回传感器名称,并在字典中以数组形式显示路径。例如:

Sensor 1 : press 1
Sensor 2 : press 2
Sensor 3 : press 3

{Sensor 1: [[x,o,o],[o,x,x],[x,x,o]]}
这是我尝试过的代码:

f=open('file.csv','r')
dic={}
key=""
s=f.readlines()
for line in s:
    row=line.split(';')
    if "Sensor" not in line:
        if key:
            dic[key].append(row)
    else:
        key=row[0]
        dic[key]=[]
print(dic)

代码不能有导入

问题是您已将
dic
定义为列表
[]
,但它应该是字典
dict()

除此之外,您可能还希望使用
rstrip()
来修剪
\n
字符并拆分行以获得列表。目前,您正在将
str
对象的每一行追加到每个传感器的列表中

f=open('file.csv','r')
dic=dict()                # this is a dictionary
s=f.readlines()
key = ""
for line in s:
    if "Sensor" not in line:
        if key:
            line = line.rstrip()
            line = line.split(';')
            dic[key].append(line)
    else:
        row = line.split(';')
        key=row[0]
        dic[key]=[]
print(dic['Sensor 1'])
根据注释进行编辑

如果还需要一个级别的索引,可以修改生成的列表,以添加带有传感器编号的新密钥

f=open('file.csv','r')
dic=dict()
s=f.readlines()
key = ""
for line in s:
    if "Sensor" not in line:
        if key:
            line = line.rstrip()
            line = line.split(';')
            dic[key].append(line)
    else:
        
        row = line.split(';')
        key=row[0]
        dic[key]=[]

sensor_dict = dict()
for k, v in dic.items(): 
    sensor_dict[k.split()[-1]] = {k: v}

user_input = input('Which sensor you want (1,2,3): ')
print(sensor_dict[user_input])
输出:

Which sensor you want (1,2,3): 3
{'Sensor 3': [['x', 'o', 'x'], ['x', 'x', 'o'], ['x', 'x', 'x']]}

您可以尝试解析字符串以获得所需的输出

data=open('temp.csv').readlines()
电流传感器=无
传感器_dict={}
对于数据中的每一行:
如果每一条线都以('Sensor')开始:
传感器名称=每一行。替换(“;”,“”)。替换(“\n”,“”)
电流传感器=传感器名称
传感器dict[电流传感器]=[]
其他:
传感器目录[当前传感器]。追加(每行。替换('\n','')。拆分(';'))
#打印(传感器记录)
打印(“”传感器1:按1
传感器2:按2
传感器3:按3
""")
用户输入='传感器'+输入('您想要哪个传感器(1,2,3):')
打印(传感器记录[用户输入])

它仍然不工作。
dic
目前的状态是:{'Sensor 1':['x','o','o'],['o','x','x'],['x','o'],'Sensor 2':['o','x','o'],['x','x','o'],['o','o'],'Sensor 3':['x','o','x'],['x','x','o'],['x','x'],['x'],'x']}。如果这不是您需要的,请修改问题。请再次检查,我已更新了答案。
Sensor 1 : press 1
Sensor 2 : press 2
Sensor 3 : press 3

Which sensor you want (1,2,3): 1
[['x', 'o', 'o'], ['o', 'x', 'x'], ['x', 'x', 'o']]