Combinaisons et calcul

- - Dernière réponse :  khrug - 2 oct. 2019 à 16:52
Bonjour,

Je débute complètement en python. Je cherche à générer des combinaisons d'objets et de calculer des sommes les caractérisants.
Un peu confus donc je donne vite un exemple:

J'ai 3 objets 'A','B','C' que je souhaite combiner entre eux par 2 par exemple.
Afin d'obtenir ce résultat
[['A', 'B'], ['A', 'C'], ['B', 'C']]

Maintenant les objets ont ses caractéristiques
A= [ST=5,SD=7,SA=2]
B= [ST=1,SD=3,SA=3]
C= [ST=2,SD=2,SA=4]

Je souhaiterais qu'en plus d'obtenir ['A', 'B'], j'ai la somme de caractéristiques de 'A' et 'B' tel que [ST=6,SD=10,SA=5] et cela pour chacune des combinaisons possibles.

Le résultat attendu serait:
La combinaison A, B donne ST=6,SD=10,SA=5
La combinaison A, C donne ST=7,SD=9,SA=6
La combinaison B, C donne ST=3,SD=5,SA=7

Merci d'avance

Configuration: Windows / Firefox 69.0
Afficher la suite 

1 réponse

0
Merci
Bonjour.

Ce n'est pas très compliqué.
D'abord générer les combinaisons, puis à l'aide des identifiants d'objets, récupérer leur caratéristiques pour en faire la somme.

Ce qui pourrait se traduire par.

import itertools

objets = {
    'A':{'ST':5,'SD':7, 'SA':2},
    'B':{'ST':1, 'SD':3, 'SA':3},
    'C':{'ST':2, 'SD':2, 'SA':4},
}

combinaisons = itertools.combinations(objets, 2)
resultats = {}

for comb in combinaisons:
    attrs = dict.fromkeys(objets['A'], 0)
    for n in comb:
        for k, v in objets[n].items():
            attrs[k] += v
    resultats[comb] = attrs

print(resultats)
Commenter la réponse de khrug