Python 是否替换主词典中的userinput列表元素?

Python 是否替换主词典中的userinput列表元素?,python,list,dictionary,Python,List,Dictionary,这里,我有一个主dic,它的值由列表列表组成 每当用户以列表的形式输入值时,我希望我的程序替换主列表中的那些用户输入列表 我已经尝试过了,它给了我预期的输出,但是它包含了很多令人讨厌的临时列表,有没有其他的python方法来实现同样的效果而不使用不需要的临时列表 输入dic: master_dic = { 'First': [[{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {

这里,我有一个主dic,它的值由列表列表组成

每当用户以列表的形式输入值时,我希望我的程序替换主列表中的那些用户输入列表

我已经尝试过了,它给了我预期的输出,但是它包含了很多令人讨厌的临时列表,有没有其他的python方法来实现同样的效果而不使用不需要的临时列表

输入dic:

master_dic = {
    'First': [[{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}],
              [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}]],
    'Second': [[{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}],
               [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}]],
    'Third': [[{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}],
              [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}]],
    'Forth': [[{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}],
              [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}]]
}
我的代码:

userinput = [[['First'], ['Forth']], [['Second'], ['First']], ['Third'], ['Forth']]

outer = []
for i in userinput:
    new = []
    if len(i) > 1:
        temp = []
        for j in i:
            jj = master_dic[j[0]]
            temp.append(jj)
        new.append(temp)
        outer.append(new)
    else:
        for k in i:
            kk = master_dic[k]
            new.append(kk)
            outer.append(new)
data_join = [i[0] for i in outer]
输出:

[
    [[[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]], [[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]]],

    [[[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]], [[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]]],

    [[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]],

    [[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]]
]
要维护的列表的数量

[
    [[[ {First value} ]], [[ {Forth value} ]]],

    [[[ {Second value} ]],[[ {First value} ]]],

    [[ {Third value} ]],

    [[ {Forth value} ]]
]

我想这就是你想要的

def array_replace(userinput,master_dic):
    for i,data in enumerate(userinput):
        if isinstance(data, list):
            found=array_replace(data,master_dic)
            if not isinstance(found, list):
                userinput[i]=master_dic[found]
        else:
            return data
    return userinput

希望这有帮助