Python 根据指定的键为列表编制索引的次数可变

Python 根据指定的键为列表编制索引的次数可变,python,Python,假设您有一个名为list_a的变量。有时,其中的对象本身也是列表,因此根据您的需要,可能需要多个索引 您有以下词典: field_dict = { 'name':[1], 'birthdate':[2,5], 'gender':[5,1,3] } 上面列表中的每个值表示如何索引列表_a以访问所需的值 为了得到一个人的名字,我只需要索引list_a一次,如下所示:list_a[1] 要查看他们的出生日期,我会列出_a[2][5]。这就是多重索引的用武之地。同样,为了获取

假设您有一个名为list_a的变量。有时,其中的对象本身也是列表,因此根据您的需要,可能需要多个索引

您有以下词典:

field_dict = {
    'name':[1],
    'birthdate':[2,5],
    'gender':[5,1,3]
}

上面列表中的每个值表示如何索引列表_a以访问所需的值

为了得到一个人的名字,我只需要索引list_a一次,如下所示:list_a[1]

要查看他们的出生日期,我会列出_a[2][5]。这就是多重索引的用武之地。同样,为了获取性别信息,我列出了_a[5][1][3]


我想知道这最优雅的实现是什么——我能想到的唯一解决方案是在过度硬编码某些细节的方式上进行一些粗暴的处理。

如评论中所述,这似乎不是一个好的数据模型。但撇开这一点不谈,我可以实现如下访问器:

def get_item(obj, indices):
    if indices:
        return get_item(obj[indices[0]], indices[1:])
    else:
        return obj
或迭代:

def get_item(obj, indices):
    while indices:
        obj = indices[0]
        indices = indices[1:]
    return obj

考虑使用一个对象列表,每个对象都是关于一个人的细节。假设我不会使用列表的列表,我会使用一个对象对象列表。我很好奇什么样的数据模型会导致一个三维度的性别列表。这似乎有点奇怪……有时编码解决方案的困难是坏数据模型的直接后果。也许重构是值得考虑的?这只是一个我为传达这一点而编造的例子,这个问题似乎很有趣,因为我从来没有想过索引指令是否可以保存为Python变量,因为我以前从未这样做过。我链接到的副本询问有关词典的问题,但它对列表的作用基本相同。