我有以下CSV数据
Rule1,Status1,1
Rule1,Status2,1
Rule1,Status3,1
Rule1,Status4,2
Rule2,Status1,2
Rule2,Status2,1
Rule2,Status3,1
Rule2,Status4,3
我在一个名为rules的列表中存储了唯一的规则(第一列)。我希望我的字典看起来像下面这样:
^{pr2}$以下是我尝试的:
openfile = ('data.csv', 'rU')
finalfile = csv.reader(openfile, delimiter=',')
FullDictionary = {}
for row in finalfile:
for j in range (0, 300): #300 number of rules
if Rules[j] not in FullDictionary:
for i in range(1, 71): #These are third column numbers 1 - 71
if i == int(row[2]) and row[0] == Rules[j]:
FullDictionary = {Rules[j] : { i : [].append[row[1]}}
print FullDictionary
但我得到的结果是:
{'Rule1': {1 : None}} and so on
我做错什么了吗?如何完成这项任务,使一个字典和另一个列表同时存在。在
我试过了:
def something():
full_dictionary = {}
with open(DataFilePath) as f:
reader = csv.reader(f)
for row in reader:
rule = row[2], status = row[0], num = int(row[5])
r = full_dictionary.setdefault(rule, {})
r.setdefault(num, []).append(status)
print full_dictionary
错误:值错误:对关闭的文件执行I/O操作
关于使用^{} 的Hwo:
输出:
^{pr2}$如果您不想使用
defaultdict
,您必须关心新的密钥。在例如,使用^{} :
输出:
list.append
返回None,因此您的赋值Rules[j] = [].append([row[1])
正在设置Rules[j] = None
。在修改为:
或者
^{pr2}$取决于你想要达到的目标。在
相关问题 更多 >
编程相关推荐