Bonjour,

J'ai une chaîne json que je voudrais trier, la clé "values" contient différents dictionnaires, chaque dictionnaire a des éléments qui doivent être trié selon la valeur numérique de leur clé "i". Par exemple, dans universe il y a "spatialunits" qui a pour valeur de "i" : 2, alors "spatialunits devra s'afficher en 3eme position.

J'ai essayé de cette manière mais ça ne marche pas, le tri ne se fait pas. Pourriez-vous m'aider à déboguer s'il vous plait?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
# -*- coding: utf8 -*-
 
from collections import OrderedDict 
 
import pprint
import json
 
 
data = {"labels":
        {
         "langdoc":"Langage documentation","locationofunitsofobservation":"Niveau de comparatisme"},
 
 
        "values":{
                  "universe":{
                              "spatialunits":{
                                              "i":2,
                                              "value":["Paris, Bruxelles, Oxford"]},
 
                              "locationofunitsofobservation":{
                                                              "i":0,
                                                              "value":["international"]},
 
 
                              "i":2,"targetgroups":{
                                                    "i":4,"value":["cadres, employés, ouvriers, militants"]},
                              "observunits":{
                                             "i":3,"value":["groupes de discussion"]},
                              "geogcover":{
                                           "i":1,"value":["nationale (France, Belgique, Royaume-Uni)"]},"studydates":{"i":5,"value":["2005-2012"]}
}                                                                                                                                                                                                   
}}}}
 
 
 
pp = pprint.PrettyPrinter(indent=4)
 
 
sort_dict = [x for x in data['values'].iteritems()]
 
pp.pprint(OrderedDict(sorted(sort_dict, key=lambda x: x[1]['i']))) # sort by key