Combinaisons et calcul

goodsayan -  
 khrug -
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

1 réponse

  1. khrug
     
    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)
    0