【问题标题】:Inserting an element in a specific location in a multi-dimensional list在多维列表的特定位置插入元素
【发布时间】:2021-09-24 16:36:29
【问题描述】:

我正在尝试在多维列表的特定实例中插入一个元素:

eg_list = [[['DF1 IN Element', ['DF_CAT1_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['DF1_CAT_en', 1.0, 'DF_CAT1_DOG', 'Element_TO()', '1']], ['BANANA Element', ['DF_CAT1_BANANA', 'Element_TO()', '1']]], [['DF2 IN Element', ['DF_CAT2_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['DF_CAT2_DOG', 'Element_TO()', '1']], ['BANANA Element', ['DF_CAT2_BANANA', 'Element_TO()', '1']]], [['MB1 IN ENABLE', ['MB_CAT1_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['MB_CAT1_DOG', 'Element_TO()', '1']], ['BANANA Element', ['MB_CAT1_BANANA', 'Element_TO()', '1']]], [['MB2 IN ENABLE', ['MB_CAT2_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['MB_CAT2_DOG', 'Element_TO()', '1']], ['BANANA Element', ['MB_CAT2_BANANA', 'Element_TO()', '1']]], [['ABC1 IN ENABLE', ['ABC_CAT1_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['ABC_CAT1_DOG', 'Element_TO()', '1']], ['BANANA Element', ['ABC_CAT1_BANANA', 'Element_TO()', '1']]]]

for i in range(0, len(eg_list)):
    for j in range(0, len(eg_list[i])):
        for k in range(0, len(eg_list[i][j][1])):
            if eg_list[i][j][1][k] == 'Element_TO()':
                eg_list.insert([i][j][1][k], 'MAIN')

基本上,我想要做的是,如果它在列表中找到“Element_TO()”,那么我会尝试在该元素之后插入“MAIN”。我正在寻找的输出是 -

[[['DF1 IN Element', ['DF_CAT1_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['DF1_CAT_en', 1.0, 'DF_CAT1_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['DF_CAT1_BANANA', 'Element_TO()', 'MAIN', '1']]], [['DF2 IN Element', ['DF_CAT2_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['DF_CAT2_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['DF_CAT2_BANANA', 'Element_TO()', 'MAIN', '1']]], [['MB1 IN ENABLE', ['MB_CAT1_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['MB_CAT1_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['MB_CAT1_BANANA', 'Element_TO()', 'MAIN', '1']]], [['MB2 IN ENABLE', ['MB_CAT2_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['MB_CAT2_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['MB_CAT2_BANANA', 'Element_TO()', 'MAIN', '1']]], [['ABC1 IN ENABLE', ['ABC_CAT1_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['ABC_CAT1_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['ABC_CAT1_BANANA', 'Element_TO()', 'MAIN', '1']]]]

我怎样才能得到这个?

编辑 - 发布了另一个包含此问题内容的问题,以获得更通用的解决方案。链接到那个问题 - link to the question

【问题讨论】:

    标签: python arrays python-3.x list multidimensional-array


    【解决方案1】:

    我会为任务使用递归:

    def add(l):
        if isinstance(l, list):
            if "Element_TO()" in l:
                l.insert(l.index("Element_TO()") + 1, "MAIN")
            for v in l:
                add(v)
    
    
    add(eg_list)
    print(eg_list)
    

    打印:

    [
        [
            [
                "DF1 IN Element",
                ["DF_CAT1_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
            ],
            [
                "DOG Element",
                ["DF1_CAT_en", 1.0, "DF_CAT1_DOG", "Element_TO()", "MAIN", "1"],
            ],
            ["BANANA Element", ["DF_CAT1_BANANA", "Element_TO()", "MAIN", "1"]],
        ],
        [
            [
                "DF2 IN Element",
                ["DF_CAT2_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
            ],
            ["DOG Element", ["DF_CAT2_DOG", "Element_TO()", "MAIN", "1"]],
            ["BANANA Element", ["DF_CAT2_BANANA", "Element_TO()", "MAIN", "1"]],
        ],
        [
            [
                "MB1 IN ENABLE",
                ["MB_CAT1_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
            ],
            ["DOG Element", ["MB_CAT1_DOG", "Element_TO()", "MAIN", "1"]],
            ["BANANA Element", ["MB_CAT1_BANANA", "Element_TO()", "MAIN", "1"]],
        ],
        [
            [
                "MB2 IN ENABLE",
                ["MB_CAT2_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
            ],
            ["DOG Element", ["MB_CAT2_DOG", "Element_TO()", "MAIN", "1"]],
            ["BANANA Element", ["MB_CAT2_BANANA", "Element_TO()", "MAIN", "1"]],
        ],
        [
            [
                "ABC1 IN ENABLE",
                ["ABC_CAT1_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
            ],
            ["DOG Element", ["ABC_CAT1_DOG", "Element_TO()", "MAIN", "1"]],
            ["BANANA Element", ["ABC_CAT1_BANANA", "Element_TO()", "MAIN", "1"]],
        ],
    ]
    

    【讨论】:

    • 如果在外部和内部列表中有多个“Element_TO()”实例,我只想在内部列表中插入元素,而不是在外部列表中。此方法适用于这种特殊情况,但如果我只想在内部列表中更改它怎么办。该怎么做?
    • @ShivamGupta 如果我理解正确,您可以在插入之前执行额外检查:检查列表是否不包含其他列表,如果不包含,请插入“MAIN”
    • 我是 python 新手,你能告诉我怎么做吗?如何仅在特定列表中插入?如何检查列表中是否没有其他列表。
    • @ShivamGupta 为了不弄乱评论部分,我建议在 Stack Overflow 上打开一个新问题(您将迄今为止尝试过的内容放在这里)。我会试着看看。
    • 我发布了另一个问题。请看一看。 "仅在多维列表中的一个列表中的特定位置插入元素"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 2019-05-31
    相关资源
    最近更新 更多