我有一个名为Materials
MATERIALS = [
'AR',
'ARU',
'ARC',
'CON',
'CSR',
'MCR',
'USF',
['AR', 'ARU', 'ARC', 'MCR', 'CSR'],
['AR', 'ARU', 'ARC', 'MCR'],
['AR', 'ARU', 'ARC'],
]
正如您最初所看到的那样,它只存储每个元素,然后对元素进行分组。
存储此混合类型列表的适当数据结构是什么?
修改以反映以下评论:
答案 0 :(得分:2)
我会去@ 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
数据结构(http://en.wikipedia.org/wiki/Trie)。但由于复杂性和缺乏可读性,我不推荐它。