Python 如何操作、合并和覆盖数据存储是词典的一个重要组成部分

Python 如何操作、合并和覆盖数据存储是词典的一个重要组成部分,python,list,dictionary,tuples,Python,List,Dictionary,Tuples,对不起,伙计们,这是个很难回答的问题,别管了。 大家好,我有两个单独的列表,其中包含许多字典,我需要将字典值覆盖到另一个字典 list1 = [ ('English', 80, 100, [ {'subcode_001': 90, 'subcode_002': 93, 'subcode_003': 98}, {'subcode_001': 81, 'subcode_002': 87, 'subcode_003': 89} ]), ('mat

对不起,伙计们,这是个很难回答的问题,别管了。 大家好,我有两个单独的列表,其中包含许多字典,我需要将字典值覆盖到另一个字典

list1 = [
    ('English', 80, 100, [
        {'subcode_001': 90, 'subcode_002': 93, 'subcode_003': 98},
        {'subcode_001': 81, 'subcode_002': 87, 'subcode_003': 89}
    ]),
    ('mathematics', 90, 100, [
        {'subcode_006': 99, 'subcode_007': 98, 'subcode_009': 91},
        {'subcode_006': 96, 'subcode_007': 7, 'subcode_008': 92}
    ])
]

list2 = [
    ('Class_10', [
        {'subcode_001': 0, 'subcode_002': 0, 'subcode_003': 0, 'subcode_004': 89, 'subcode_005': 90},
        {'subcode_001': 10, 'subcode_002': 0, 'subcode_003': 10, 'subcode_004': 78, 'subcode_005': 60}
    ]),
    ('class_11', [
        {'subcode_006': 0, 'subcode_007': 0, 'subcode_008': 0, 'subcode_009': 0},
        {'subcode_006': 0, 'subcode_007': 0, 'subcode_008': 0, 'subcode_009': 0}
    ])
]
在上面的
list1
中有一些主题标记,
list2
有所有主题,因此我需要将键
list1
覆盖到
list2
,并创建如下输出:

output = [
    ('class_10', 80, 100, [
        {'subcode_001': 90, 'subcode_002': 93, 'subcode_003':98, 'subcode_004': 89, 'subcode_005': 90},
        {'subcode_001': 81, 'subcode_002': 87, 'subcode_003':89, 'subcode_004': 78, 'subcode_005': 60}
    ]),
    ('class_11', 90, 100, [
        {'subcode_006': 99, 'subcode_007': 98, 'subcode_008': 0, 'subcode_009': 91},
        {'subcode_006': 96, 'subcode_007': 7, 'subcode_008': 92, 'subcode_009': 0}
    ])
]

此解决方案假定两个列表的条目按顺序匹配,即列表1的第一个元素与列表2的第一个元素匹配(否则,您将需要某种形式的字典来匹配两个列表的元素):


例如,是什么决定了“English”与“Class_10”@user650881 Hi相对应?我们可以通过两个列表中的键来确定这段代码是否正常工作,但我需要列表2所有字典值都被列表1覆盖,如下所示:('Class_10',80,100,[{'subcode_001':90,'subcode_002':93,'subcode_003':98,'subcode_004':89,'subcode_005':90},{'subcode_001':81,'subcode_002':87,'subcode_003':89,'subcode_004':78,'subcode_005':60})啊,好的,错过了字典也需要合并,编辑我的解决方案,非常感谢你能帮我吗
output = []
for tup1, tup2 in zip(list1,list2):
    add_up_dics = []
    for dic1, dic2 in zip(tup1[-1],tup2[-1]):
        for key,value in dic1.items():
            if key in dic2:
                dic2[key] = max(dic2[key],value)
            else:
                dic2[key] = value
        add_up_dics.append(dic2)
    output.append((tup2[0],*tup1[1:3],add_up_dics))