Bonjour,
j'utilise un dictionnaire pour stocker des informations sous forme de liste pour chaque champ. Il s'agit des propriétés des modes d'une pièce:
modes = {'fréquence':[12, 3, 24], 'coef':[1, 2, 3]}
et je voudrais trier ce dictionnaire en fonction de la fréquence pour obtenir:
modes = {'fréquence':[3, 12, 24], 'coef':[2, 1, 3]}
Je souhaite éviter de recourir à la définition d'un classe mode, car je voudrais ensuite pouvoir convertir les listes de mon dictionnaire en array.
Voilà. C'est peut-être une question triviale, mais je ne trouve pas de solution élégante. Pour l'instant, je fais la copie du champ 'fréquence' et je suis obligé de faire un nouveau dictionnaire qui contient les modes triés.
Merci d'avance!
# beh ca
Posté par cho7 (site web personnel) . Évalué à 2.
for cle in modes: modes[cle].sort()
ya ptetre une methode plus short, mais en attendant ca te résoud ton problème, et sans copie
[^] # Re: beh ca
Posté par cho7 (site web personnel) . Évalué à 2.
[^] # Re: beh ca
Posté par cho7 (site web personnel) . Évalué à 2.
Mais j'avais commencé à chercher du coté de la modification de la fonction sort() :
def maFonctionDeTri(val1,val2):
#ici trouver comment retourner 1 ou 0 selon les cas
modes["coef"].sort(maFonctionDeTri)
Hope this helps
[^] # Re: beh ca
Posté par Gilles G. . Évalué à 2.
Je vois que ma question n'était pas si simple. Je verrais ce soir si je peux faire quelque chose dans ce genre.
Si quelqu'un a d'autres idées, je suis preneur.
# idée
Posté par Putifuto . Évalué à 4.
Ce que je ferais :
>>> modes = {'f':[12, 3, 24], 'c':[1, 2, 3]}
# création d'un tableau o temporaire.
>>> o=[]
>>> for i in xrange(len(modes['f'])):
... o.append([modes['f'][i],modes['c'][i]])
...
>>> o
[[12, 1], [3, 2], [24, 3]]
>>> o.sort()
>>> o
[[3, 2], [12, 1], [24, 3]]
# remise en forme.
>>> modes={'f':[],'c':[]}
>>> for i in o:
... modes['f'].append(i[0])
... modes['c'].append(i[1])
...
>>> modes
{'c': [2, 1, 3], 'f': [3, 12, 24]}
et voilà.
# zip, sort, unzip
Posté par 태 (site web personnel) . Évalué à 5.
Le unzip que j'ai fait est probablement très mauvais, mais je n'ai pas cherché mieux.
[^] # Re: zip, sort, unzip
Posté par Gilles G. . Évalué à 2.
J'aime beaucoup cette solution, je la trouve très élégante. Le seul inconvénient c'est qu'on doit toujours faire appelle à une variable intermédiaire mais tant pis...
Merci à tous!
[^] # Re: zip, sort, unzip
Posté par gaaaaaAab . Évalué à 3.
sinon, pour le unzip, j'aurais plus fait un :
modes['f'] = [ i[0] for i in fc ]
modes['coef'] = [ i[1] for i in fc ]
qui me parait plus lisible
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.