je le dictionnaire suivant:Obtenez tous les sous-ensembles d'un dictionnaire Python avec des restrictions
intervals = {'param1': [0, 1],
'param2_hi': [4, 5, 6, 7, 8, 9],
'param2_lo': [0, 1, 2, 3, 4, 5],
'param3_hi': [9, 10, 11, 12, 13, 14, 15],
'param3_lo': [5, 6, 7, 8, 9, 10],
'param4': [0, 1],
'param5_hi': [4, 5, 6, 7, 8, 9],
'param5_lo': [0, 1, 2, 3, 4, 5]}
Comment puis-je créer tous les sous-ensembles possibles de ce dictionnaire où je dois avoir exactement un de chaque numéro x pour « paramx »? Cela signifie que je ne peux avoir qu'une entrée pour param1 (_lo ou _hi), une entrée pour param2 (_lo ou _hi), et ainsi de suite, et que chaque sous-ensemble doit inclure tous les paramx qui n'ont pas de _lo ou _hi.
Voici deux sous-ensembles possibles:
subset_one = {'param1': [0, 1],
'param2_hi': [4, 5, 6, 7, 8, 9],
'param3_hi': [9, 10, 11, 12, 13, 14, 15],
'param4': [0, 1],
'param5_hi': [4, 5, 6, 7, 8, 9]}
subset_two = {'param1': [0, 1],
'param2_lo': [0, 1, 2, 3, 4, 5],
'param3_lo': [5, 6, 7, 8, 9, 10],
'param4': [0, 1],
'param5_lo': [0, 1, 2, 3, 4, 5]}
# Example of mixed '_hi' and '_lo' intervals
subset_three = {'param1': [0, 1],
'param2_lo': [0, 1, 2, 3, 4, 5],
'param3_hi': [9, 10, 11, 12, 13, 14, 15],
'param4': [0, 1],
'param5_lo': [0, 1, 2, 3, 4, 5]}
...
Note: Je veux préserver la clé, des paires de valeurs. Edit: Ajout de subset_three pour montrer la possibilité d'avoir des intervalles mixés '_lo' et '_hi'.
Est-ce que ce sont les seules clés que vous auriez? –
Est-ce une liste finie de paramètres, sont-ils leurs vrais noms et sont-ils toujours suffixés avec un nombre dans l'ordre croissant? – zwer
Il pourrait y avoir plus (en fonction des différentes exécutions de mon programme), mais les clés seront toujours de la forme paramx, paramx_lo, paramx_hi où x est un nombre entier. –