什么是合适的Python数据结构来保存它的项和它的项的组合列表?
我有一个名为什么是合适的Python数据结构来保存它的项和它的项的组合列表?,python,data-structures,Python,Data Structures,我有一个名为Materials MATERIALS = [ 'AR', 'ARU', 'ARC', 'CON', 'CSR', 'MCR', 'USF', ['AR', 'ARU', 'ARC', 'MCR', 'CSR'], ['AR', 'ARU', 'ARC', 'MCR'], ['AR', 'ARU', 'ARC'], ] 正如您所看到的,它首先单独存储每个元素,然后对元素进行分组 存储此混合类型列表的适当
Materials
MATERIALS = [
'AR',
'ARU',
'ARC',
'CON',
'CSR',
'MCR',
'USF',
['AR', 'ARU', 'ARC', 'MCR', 'CSR'],
['AR', 'ARU', 'ARC', 'MCR'],
['AR', 'ARU', 'ARC'],
]
正如您所看到的,它首先单独存储每个元素,然后对元素进行分组
存储此混合类型列表的适当数据结构是什么?
编辑以反映以下评论:
我会选择@joel cornett注释,即存储数据类型的一致性
MATERIALS = [
['AR'],
['ARU'],
['ARC'],
['CON'],
['CSR'],
['MCR'],
['USF'],
['AR', 'ARU', 'ARC', 'MCR', 'CSR'],
['AR', 'ARU', 'ARC', 'MCR'],
['AR', 'ARU', 'ARC'],
]
如果这不适合你,那么有两个列表。如果您事先知道您的模型,则最好使用变量而不是字符串:
AR = 'AR'
ARU = 'ARU'
ARC = 'ARC'
CON = 'CON'
CSR = 'CSR'
MCR = 'MCR'
USF = 'USF'
MATERIALS_SIMPLE = [
AR,
ARU,
ARC,
CON,
CSR,
MCR,
USF,
]
MATERIALS = [
[AR, ARU, ARC, MCR, CSR],
[AR, ARU, ARC, MCR],
[AR, ARU, ARC],
]
只要性能不受限制,我就告诉您不要费心优化内存存储。例如,如果您只需要处理数据,只要您的数据不大于RAM,就可以了
至于冗余,如果您的意思是某些列表共享一个公共前缀,并且希望利用这个前缀,那么可以使用
trie
datastructure()。但是我不推荐它,因为它很复杂,而且缺乏可读性。您可以通过将前7个元素转换为包含一个项目的列表来均匀化列表。您能澄清一下“存储”是什么意思吗?如果您的意思是存储在磁盘上,那么首先需要序列化它。您可以使用“pickle”或“json”模块来实现这一点。在不知道要对这些数据做什么的情况下,很难说出任何有意义的话。有几种方法可以存储这些数据,在不知道其用途的情况下,我们所能做的就是列举所有这些方法。那么,你为什么不告诉我们你打算如何使用这些数据,这样我们就可以建议容器并论证它们的相对优点呢?你现在这样做有什么问题吗?没有列表的项目与列表中的项目有什么不同吗?