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))