2017-06-23 5 views
1

Ich habe eine Liste mit folgendem Format:python django Wörterbücher

[{'BURGLARY': [0, 1, 1, 0], 'PHYSICAL ASSAULT': [0, 0, 1, 0], 'ROBBERY': 
    [0, 0, 0, 1], 'VANDALISM': [2, 0, 1, 0], 'THEFT': [1, 3, 2, 1], 'DRUGS AND SUBSTANCE ABUSE': [0, 0, 1, 0], 'SEXUAL HARASSMENT': [0, 0, 0, 1]}] 

Ich möchte das Format ändern:

[ 
    { 
    name:"BURGLARY", 
    data:[0, 1, 1, 0] 
    } 
    { 
    name:"PHYSICAL ASSAULT", 
    data:[0, 0, 1, 0] 
    } 
... 
] 

Wie kann ich diese archivieren? Bitte helfen Sie.

Antwort

3
data = [{'BURGLARY': [0, 1, 1, 0], 'PHYSICAL ASSAULT': [0, 0, 1, 0], 'ROBBERY': 
     [0, 0, 0, 1], 'VANDALISM': [2, 0, 1, 0], 'THEFT': [1, 3, 2, 1], 'DRUGS 
     AND SUBSTANCE ABUSE': [0, 0, 1, 0], 'SEXUAL HARASSMENT': [0, 0, 0, 1]}] 
rlt = [{'name': key, 'data': val} for key,val in data[0].items()] 

die rlt ist, was Sie

+0

dieser Typ als ich schneller gehen =)) I t ist eine gute Antwort –

2
data = [{'BURGLARY': [0, 1, 1, 0], 'PHYSICAL ASSAULT': [0, 0, 1, 0], 'ROBBERY': 
    [0, 0, 0, 1], 'VANDALISM': [2, 0, 1, 0], 'THEFT': [1, 3, 2, 1], 'DRUGS AND SUBSTANCE ABUSE': [0, 0, 1, 0], 'SEXUAL HARASSMENT': [0, 0, 0, 1]}] 

new_data = [{ "name": k, "data" : data[0][k]} for k in data[0]] 

Ausgabe wollen:

[{'data': [0, 0, 0, 1], 'name': 'ROBBERY'}, 
{'data': [2, 0, 1, 0], 'name': 'VANDALISM'}, 
{'data': [0, 0, 0, 1], 'name': 'SEXUAL HARASSMENT'}, 
{'data': [1, 3, 2, 1], 'name': 'THEFT'}, 
{'data': [0, 1, 1, 0], 'name': 'BURGLARY'}, 
{'data': [0, 0, 1, 0], 'name': 'PHYSICAL ASSAULT'}, 
{'data': [0, 0, 1, 0], 'name': 'DRUGS AND SUBSTANCE ABUSE'}] 
1
a=[{'BURGLARY': [0, 1, 1, 0], 'PHYSICAL ASSAULT': [0, 0, 1, 0], 'ROBBERY': [0, 0, 0, 1], 'VANDALISM': [2, 0, 1, 0], 'THEFT': [1, 3, 2, 1], 'DRUGS AND SUBSTANCE ABUSE': [0, 0, 1, 0], 'SEXUAL HARASSMENT': [0, 0, 0, 1]}] 
result=[] 
for b in a: 
    for i,j in b.items(): 
     result.append({"name":i,"data":j}) 
print(result) 

Ausgang

[{'name': 'VANDALISM', 'data': [2, 0, 1, 0]}, {'name': 'SEXUAL HARASSMENT', 'data': [0, 0, 0, 1]}, {'name': 'PHYSICAL ASSAULT', 'data': [0, 0, 1, 0]}, {'name': 'DRUGS AND SUBSTANCE ABUSE', 'data': [0, 0, 1, 0]}, {'name': 'THEFT', 'data': [1, 3, 2, 1]}, {'name': 'ROBBERY', 'data': [0, 0, 0, 1]}, {'name': 'BURGLARY', 'data': [0, 1, 1, 0]}] 
+0

Für eine gute altmodische Antwort, +1. Beachten Sie jedoch, dass b.items() eine neue Liste im Speicher erstellt. Es wäre schneller, mit dem Diktatschlüssel zu referenzieren. –

+0

Vielen Dank. Sie sind alle erstaunlich –

Verwandte Themen