J'ai donc 2 dictionnaires au sein de dictionnaires. Je dois ajouter les valeurs des 2 dictionnaires internes en fonction des clés des dictionnaires externes. Par exemple.
Dict1 = {A:{1:10,2:20},B:{1:15,2:30},C:{1:2,2:12},D:{1:15,2:40}}
Dict2 = {A:{1:30,2:10},B:{1:10,2:20},C:{1:30,2:20},E:{1:5,2:10}}
Donc, je dois ajouter les valeurs de 1 de Dict1 àvaleurs de 2s à Dict2. Par exemple, pour la clé A des deux dictionnaires, l'addition des valeurs 1 de Dict1 et 2s forme Dict2: 10 + 10 = 20 et inversement, c'est-à-dire 2s de Dict1 + 1s de Dict 2: 20 +30 = 50 et crée un nouveau dictionnaire: { A: {up: 20, down = 50}}
Donc, la sortie souhaitée serait:
Final_dict = {A:{up:20,down:50},B:{up:35,down:40},c:{up:22,down:42},D:{up:15,down:40},E:{up:10,down:5}}
Ou créez simplement des dictionnaires séparés pour chaque ajout:
Up_Dict = {A:20,B:35,C:22,D:15,E:10}
Down_Dict = {A:50,B:40,C:42,D:40,E:5}
Quel serait le meilleur moyen de procéder à cette addition car les deux dictionnaires que j'ai sont énormes?
Que toi !!
Réponses:
0 pour la réponse № 1Vous pouvez utiliser quelques compréhensions de dictionnaire. Je remplis d'abord les deux dictionnaires avec les clés manquantes, puis retourne un dictionnaire avec la somme souhaitée.
keys = set(Dict1.keys()+Dict2.keys())
dic1 = {k:Dict1[k] if k in Dict1 else {1:0, 2:0} for k in keys}
dic2 = {k:Dict2[k] if k in Dict2 else {1:0, 2:0} for k in keys}
out = {k:{"up": dic1[k][1]+dic2[k][2], "down": dic2[k][1]+dic1[k][2]} for k in keys}
Cela donne la sortie suivante:
{"A": {"down": 50, "up": 20},
"B": {"down": 40, "up": 35},
"C": {"down": 42, "up": 22},
"D": {"down": 40, "up": 15},
"E": {"down": 5, "up": 10}}
0 pour la réponse № 2
Essayez ceci peut être le pire moyen
keys = Dict1.keys()+Dict2.keys()
>>>[{i:{"up":Dict1[i][1] if i in Dict1 else 0 +
Dict2[i][2] if i in Dict2 else 0,"down": Dict1[i][2]
if i in Dict1 else 0 + Dict2[i][1] if i in Dict2 else 0 }}
for i in set(keys)]
[{"A": {"down": 20, "up": 10}},
{"C": {"down": 12, "up": 2}},
{"B": {"down": 30, "up": 15}},
{"E": {"down": 5, "up": 10}},
{"D": {"down": 40, "up": 15}}]