2017-11-07 3 views
1

Ich habe ein JSON-Dokument wie folgt aus:„Umgruppierung“ Daten aus verschachtelten Wörterbücher

{ 
'item1':{ 
    'value':[a,b], 
    'number':1 
    }, 
'item2':{ 
    'value':[a], 
    'number':2 
    }, 
'item3':{ 
    'value':[b], 
    'number':3 
    } 
} 

Ist es möglich, Itemnamen von Werten gruppiert zu bekommen?

Hier ist, was ich will:

a: item1, item2 
b: item1, item3 

Ich habe versucht, die folgenden, aber es hat nicht funktioniert:

l = sorted(l.iteritems()) 
for key, group in groupby(l,key=lambda x:x['value']): 
    print key, group 

Antwort

1

Erstens, das ist nicht JSON.

Strings in JSON haben doppelte, nicht einfache Anführungszeichen, und die nicht notierten Token a und b in JSON bedeutungslos sind. Unter der Annahme, dass Ihre eigentliche Dokument etwas wie folgt aussieht:

{ 
    "item1": { 
    "value": ["a", "b"], 
    "number": 1 
    }, 
    "item2": { 
    "value": ["a"], 
    "number": 2 
    }, 
    "item3": { 
    "value": ["b"], 
    "number": 3 
    } 
} 

... und Sie haben es in ein Wörterbuch Python geladen data, können Sie die Ausgabe erhalten Sie wie folgt vor:

grouped = {} 
for key, subdict in data.items(): 
    for value in subdict['value']: 
     grouped.setdefault(value, []).append(key) 

Welche verlassen Sie mit grouped suchen wie folgt aus:

{ 
    'a': ['item2', 'item1'], 
    'b': ['item3', 'item1'] 
} 
+1

Es hat funktioniert! Vielen Dank. Entschuldigung für meine falsche JSON-Formatierung. – tej

Verwandte Themen