Python 电子表格数据的最高效实现

Python 电子表格数据的最高效实现,python,dictionary,nested-lists,Python,Dictionary,Nested Lists,我用非常大的电子表格数据做了很多工作(其中大部分是数字数据)。我一直在使用嵌套列表处理数据,通过属性的索引访问属性。最近有人告诉我,这不是处理此类数据的非常有效的方法 我很好奇是否有一种更有效的方法可以使用字典来构造这种类型的数据 例如,如果我有一个通常看起来像嵌套列表的电子表格: sheet = [['ACCOUNT', 'VALUE1', 'VALUE2', 'VALUE3'], ['Account1', '3.4332', '2.524', '4,567.23'],

我用非常大的电子表格数据做了很多工作(其中大部分是数字数据)。我一直在使用嵌套列表处理数据,通过属性的索引访问属性。最近有人告诉我,这不是处理此类数据的非常有效的方法

我很好奇是否有一种更有效的方法可以使用字典来构造这种类型的数据

例如,如果我有一个通常看起来像嵌套列表的电子表格:

sheet = [['ACCOUNT', 'VALUE1', 'VALUE2', 'VALUE3'],
        ['Account1', '3.4332', '2.524', '4,567.23'],
        ['Account2', '1,235.67', '8.98', '4,321.78']]
我如何使用(嵌套的?)字典设置它,以便通过“Account”键和“Header”键访问值?(基本上可以轻松访问Account1、Value2)


从性能的角度来看,我更希望在迭代帐户和提取帐户/值对以进行比较/变异时,实现是高效的。(我每天都对数组进行大量分析,数组结构保持不变,但数值数据会发生变化)。

您应该使用numpy。该软件包具有非常高效的2d阵列实现

row_iter = iter(sheet)
keys = next(row_iter)[1:]
data = {}
for row in row_iter:
    data[row[0]] = dict(zip(keys, row[1:]))
创建字典

{'Account1': {'VALUE1': '3.4332', 'VALUE2': '2.524', 'VALUE3': '4,567.23'},
 'Account2': {'VALUE1': '1,235.67', 'VALUE2': '8.98', 'VALUE3': '4,321.78'}}

您现在可以通过以下方式访问字段:
数据['Account1']['VALUE2']

我将数据存储在二维矩阵中,然后使用字典按名称查找列/行。

如果列标题不经常更改,您最好将两者结合起来-对行使用字典,但是,为每行中的列保留具有整数索引的列表。例如:

columns = {'VALUE1': 1, 'VALUE2': 2, 'VALUE3': 3}
sheet = {
         'Account1': ['3.4332', '2.524', '4,567.23'],
         'Account2': ['1,235.67', '8.98', '4,321.78'],
        }
这允许您不必将列名作为字典键重复存储,同时仍然可以快速查找帐户名

查找将如下所示:

val = sheet['Account1'][columns['VALUE2']]


一个
dict
namedtuple
s也是一种有效的方法,而不是一个
dict
list
s+一个
dict
的键。

对我来说,
数据['Account1']['VALUE2']
的代码更容易阅读,但是——不算上构建字典的开销——是不是更多“高效”?似乎一个2D数组比嵌套字典占用的空间更少,执行速度更快。您是否确实在当前的方法中遇到了性能问题?
val = sheet['Account1'][columns['VALUE2']]