我有一个名为Materials
的列表
MATERIALS = [
'AR',
'ARU',
'ARC',
'CON',
'CSR',
'MCR',
'USF',
['AR', 'ARU', 'ARC', 'MCR', 'CSR'],
['AR', 'ARU', 'ARC', 'MCR'],
['AR', 'ARU', 'ARC'],
]
正如您所看到的,它首先单独存储每个元素,然后对元素进行分组。
存储此混合类型列表的适当数据结构是什么?
编辑以反射(reflect)以下评论:
- 通过存储,我真正的意思是,将变量存储在内存中的适当方式是什么
- 此列表说明了将输入数值模型的不同测试用例。因此,第一项是对 Material 中的每个项目进行建模。
- 我希望避免冗余并遵循最佳实践
最佳答案
我会选择@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,就可以。
至于冗余,如果您的意思是某些列表共享一个公共(public)前缀并且您想利用它,则可以使用 trie
数据结构 ( http://en.wikipedia.org/wiki/Trie )。但我不推荐它,因为它很复杂并且缺乏可读性。
关于python - 什么是合适的 Python 数据结构来保存其项目及其项目的组合列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17603632/