2015-11-03 3 views
0

Это должно быть довольно прямолинейно, однако у меня возникли проблемы с его работой. У меня следующий код ниже.Python, получив список в правильный формат JSON

У меня есть файл CSV из которых в колонке А, У меня есть следующие:

[11, 12, 14, 18, 19, 23, 43, 44] 

В колонке Б, У меня есть следующие:

[2, 2, 2, 2, 2, 2, 2, 2] 

Моя попытка:

import numpy 
import csv 
import json 

f = open('C:\filepath\m.csv', 'r+') 
csv_f = csv.reader(f, delimiter=',', quotechar='"') 
new_list = [] 
new_list_two = [] 

for row in csv_f: 
    new_list.append(row[0]) 
    new_list_two.append(row[1]) 
    new_list_two= map(int, new_list_two) 
    new_list= map(int, new_list) 
    a = str(numpy.mean(new_list)) 
    b = str(numpy.mean(new_list_two)) 
    c = new_list + new_list_two 

Следующий код вернет:

[11, 12, 14, 18, 19, 23, 43, 44, 2, 2, 2, 2, 2, 2, 2, 2] 

Я хочу, чтобы мой код, чтобы назначить его в файл JSON, добавив его в словарь и имеющий выход, как например:

[ 
    { 
     "September": 11, 
     "medium-critical": 2 
    }, 
    { 
     "September": 12, 
     "medium-critical": 2 
    }, 
    { 
     "September": 14, 
     "medium-critical": 2 
    }, 
    { 
     "September": 18, 
     "medium-critical": 2 
    }, 
    { 
     "September": 19, 
     "medium-critical": 2 
    }, 
    { 
     "September": 23, 
     "medium-critical": 2 
    }, 
    { 
     "September": 43, 
     "medium-critical": 2 
    }, 
    { 
     "September": 44, 
     "medium-critical": 2 
    }, 
    { 
     "September": 20, 
     "medium-critical": 3 
    }, 
    { 
     "September": 32, 
     "medium-critical": 3 
    }, 
    { 
     "September": 33, 
     "medium-critical": 3 
    }, 
    { 
     "September": 54, 
     "medium-critical": 3 
    }, 
    { 
     "September": 57, 
     "medium-critical": 3 
    }, 
    { 
     "September": 69, 
     "medium-critical": 3 
    }, 
    { 
     "September": 70, 
     "medium-critical": 3 
    }, 
    { 
     "September": 73, 
     "medium-critical": 3 
    }, 
    { 
     "September": 58, 
     "medium-critical": 6 
    }, 
    { 
     "September": 66, 
     "medium-critical": 6 
    }, 
    { 
     "September": 100, 
     "medium-critical": 7 
    }, 
    { 
     "September": 68, 
     "medium-critical": 9 
    }, 
    { 
     "August": 23, 
     "medium-critical": 2 
    }, 
    { 
     "August": 44, 
     "medium-critical": 2 
    }, 
    { 
     "August": 19, 
     "medium-critical": 2 
    }, 
    { 
     "August": 18, 
     "medium-critical": 2 
    }, 
    { 
     "August": 43, 
     "medium-critical": 2 
    }, 
    { 
     "August": 48, 
     "medium-critical": 2 
    }, 
    { 
     "August": 53, 
     "medium-critical": 3 
    }, 
    { 
     "August": 67, 
     "medium-critical": 3 
    }, 
    { 
     "August": 20, 
     "medium-critical": 3 
    }, 
    { 
     "August": 66, 
     "medium-critical": 3 
    }, 
    { 
     "August": 34, 
     "medium-critical": 3 
    }, 
    { 
     "August": 60, 
     "medium-critical": 3 
    }, 
    { 
     "August": 75, 
     "medium-critical": 3 
    }, 
    { 
     "August": 49, 
     "medium-critical": 3 
    } 
] 

я попытался запустить список «с» через для но не смогли получить правильное выполнение задания.

Что-то вроде этого:

with open('C:\filepath\m.csv') as f: 

    mydict=dict(csv.reader(f)) 
    mydict['mean b'] = b 
    mydict['mean a'] = a 

    mydict = [mydict] 
    print mydict 
    new_dict = {} 
    for i in mydict: 
     new_dict[] 

    with open('C:\filepath\jsonfile.json', 'w') as q: 
     json.dump(mydict, q) 

Есть ли лучший способ, чтобы получить желаемый результат?

+1

то, что вы получаете в качестве вывода? как вы получаете имена ключей в вашем json-файле? –

+1

Этот последний фрагмент не похож, что в этом цикле отсутствуют некоторые бит. Он также имеет некоторые недействительные дополнительные отступы в инструкции 'print'. – roeland

ответ

3

Решение:

import csv 
import json 

json.dump([{'September': k, 'medium-critical': v} 
    for k, v in csv.reader(open('data.csv'))], open('data.json', 'w')) 
+0

Так оно и было, большое спасибо – jthedudeoflife

+0

Я знал, что это будет всего лишь несколько строк кода. – jthedudeoflife

Смежные вопросы