Supponiamo che io sono un array:Converte array ridondanti in dict (o JSON)?
[['a', 10, 1, 0.1],
['a', 10, 2, 0.2],
['a', 20, 2, 0.3],
['b', 10, 1, 0.4],
['b', 20, 2, 0.5]]
E voglio un dict
(o JSON):
{
'a': {
10: {1: 0.1, 2: 0.2},
20: {2: 0.3}
}
'b': {
10: {1: 0.4},
20: {2: 0.5}
}
}
C'è un buon modo o qualche libreria per questo compito?
In questo esempio la matrice è solo 4 colonne, ma la mia matrice originale è più complicata (7 colonne).
Attualmente mi attuare questo ingenuamente:
import pandas as pd
df = pd.DataFrame(array)
grouped1 = df.groupby('column1')
for column1 in grouped1.groups:
group1 = grouped1.get_group(column1)
grouped2 = group1.groupby('column2')
for column2 in grouped2.groups:
group2 = grouped2.get_group(column2)
...
E defaultdict
modo:
d = defaultdict(lambda x: defaultdict(lambda y: defaultdict ...))
for row in array:
d[row[0]][row[1]][row[2]... = row[-1]
Ma penso che non è intelligente.
Intendi '['a', 10, 2, 0.2]' come secondo elemento del tuo elenco, o il programma deve anche converte '['a', 10, 1, 0.2]' a '['a', 10, 2, 0.2]'? –
@KevinGuan scusate, ho scritto male e modificato la mia domanda. Ogni colonna chiave (colonne eccetto l'ultima colonna) dovrebbe essere unica. (Almeno, rimuoverò i duplicati in anticipo) – keisuke
Qual è l'output previsto, se ogni elenco interno ha un numero dispari di elementi? – AKS