【问题标题】:Which data structure to use in python在python中使用哪种数据结构
【发布时间】:2015-03-19 10:03:27
【问题描述】:

我有以下 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 类时,我想知道使用哪种数据结构。 该类将明确要求输入要使用的 Class # Type 10Type 11 总是参与计算。

更新: 上面,Class # 是字符串,实际上是类类型的简短描述。

到目前为止,我正在尝试以下内容:

ec['class'] = ec.get('class', {'type_a': float(), 'type_b': float()})

然后可以使用,例如,作为

ec['class']['type_b']

在这种情况下需要注意哪些事项以及最佳做法是什么?

【问题讨论】:

  • 我建议 pandas 它支持快速 csv 加载、快速查找、矢量化操作
  • 我希望在类的实现中尽可能的独立。
  • 您可以使用 pandas 加载数据,然后将其传输到您想要的任何类中。
  • @TheBlackCat OP 出于某种原因不想使用外部模块,问题更多是类设计问题
  • 你不能像这样建立一个字典吗?:pastebin.com/tnyhmCJz

标签: python dictionary data-structures


【解决方案1】:

假设类总是有序的,我想最简单的事情就是在列表中包含一个列表。对我来说,当我需要在计算中使用数字时会更方便。

我假设您按行读取数据并获得一个列表。请注意,类 1 现在位于表中的位置 0。每个类列表都有一个子列表,类型 10 在 pos 0 中,Type 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]])

您也许还可以通过列表理解来缩短这段代码,但我暂时无法理解它。

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    相关资源
    最近更新 更多