我有以下,当然是短的," table"以csv的形式:
"Some Class"|"Type 10"|"Type 11"
"Class 1" | 0.971 | 0.968
"Class 2" | 0.995 | 0.996
"Class 3" | 0.970 | 0.971
"Class 4" | 0.969 | 0.970
"Class 5" | 0.992 | 0.998
"Class 6" | 0.992 | 0.998
"Class 7" | 0.980 | 0.984
"Class 8" | 0.973 | 0.981
"Class 9" | 0.969 | 0.978
"Class 10" | 0.992 | 0.998
在构建一个python类时,会使用从上面的#34; table"中检索系数的方法,以及将在计算中使用它们的方法,我想知道要使用哪种数据结构。 该类将明确要求输入 Class#以供使用。 Type 10 和 Type 11 ,始终参与计算。
上面的更新:, Class#是字符串,实际上是类类型的简短描述。
到目前为止,我正在尝试以下内容:
ec['class'] = ec.get('class', {'type_a': float(), 'type_b': float()})
然后可以使用,例如,
ec['class']['type_b']
在这种情况下需要注意哪些事项以及最佳做法是什么?
答案 0 :(得分:0)
如果类总是按顺序排列,我想最简单的方法就是在列表中有一个列表。对我来说,当我需要在计算中使用数字时,它会更方便。
我假设您在行中读取数据并获取列表。请注意,类1现在位于表中的第0位。每个类列表都有一个子列表,其中类型10在pos 0中,类型11在pos 1中。
data = ['Some Class|Type 10|Type 11',
'Class 1|0.971|0.968',
'Class 2|0.995|0.996',
'Class 3|0.970|0.971',
'Class 4|0.969|0.970',
'Class 5|0.992|0.998',
'Class 6|0.992|0.998',
'Class 7|0.980|0.984',
'Class 8|0.973|0.981',
'Class 9|0.969|0.978',
'Class 10|0.992|0.998']
# To get rid of the title
data.pop(0)
ec = []
for datarow in data:
dsplit = datarow.split('|')
ec.append([dsplit[1],dsplit[2]])
你也可以通过列表理解来缩短这段代码,但暂时还是让我望而却步。