什么是合适的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”模块来实现这一点。在不知道要对这些数据做什么的情况下,很难说出任何有意义的话。有几种方法可以存储这些数据,在不知道其用途的情况下,我们所能做的就是列举所有这些方法。那么,你为什么不告诉我们你打算如何使用这些数据,这样我们就可以建议容器并论证它们的相对优点呢?你现在这样做有什么问题吗?没有列表的项目与列表中的项目有什么不同吗?