2014-06-02 6 views
-1

У меня возникли проблемы с преобразованием списка словарей в словарь списков. Любые рекомендации и помощь приветствуются. Мой CSVreader - это список словарей. При печати он дает ОГРОМНЫЙ список словарей, и я бы хотел, чтобы это был словарь списков. Вот CSVreader, о котором я говорю.Список словарей в словарь списков

CSVreader = csv.DictReader(open('N:/Individual Files/Jerry/2013 customer list qc, cr, db, gb 9-19-2013_JerrysMessingWithVersion.csv', "rb"),dialect='excel', delimiter=',') 

for row in CSVreader: 
     print row 
+0

Включение данных образца и ожидаемого результата поможет. – shaktimaan

+0

Прошу прощения. {'cust_no': 126, 'lastname': 'smith', 'firstname': 'john', 'cust_no: 127', 'lastname': 'smoth', 'firstname', 'bob'} в {'cust_no' : [126,127], 'lastname': ['smith', 'smoth'], 'firstname: [' john ',' bob ']} Спасибо за все входные данные – user3692506

ответ

0

В комментариях к вашему вопросу вы отметили, что входные данные:

{'cust_no':126,'lastname':'smith','firstname':'john','cust_no:127','lastname':'s‌​moth','firstname','bob'} 

Обратите внимание, что это не список словарей. Это, является:

[{ 'cust_no':126, 'lastname': 'smith', 'firstname':'john'}, {'cust_no':127, 'lastname':'smoth', 'firstname':'bob'}] 

Переход исправленным ввода, вы можете получить то, что вы хотите с помощью defaultdict.

>>> input_data = [{ 'cust_no':126, 'lastname': 'smith', 'firstname':'john'}, {'cust_no':127, 'lastname':'smoth', 'firstname':'bob'}] 
>>> from collections import defaultdict 
>>> output_data = defaultdict(list) 
>>> for a_dict in input_data: 
...  for k, v in a_dict.items(): 
...    output_data[k].append(v) 
... 
>>> output_data 
defaultdict(<type 'list'>, {'lastname': ['smith', 'smoth'], 'cust_no': [126, 127], 'firstname': ['john', 'bob']}) 
+0

Большое спасибо за информацию и извините за неправильный список словарей. Я очень ценю всю информацию! – user3692506

3

Предполагая, что ваш CSVReader ведет себя как список словарей:

from collections import defaultdict 
result = defaultdict(list) 
for d in CSVreader: 
    for k, v in d.items(): 
     result[k].append(v) 
+0

Когда я печатаю свой CSVreader, он действует как список словарей , но только CSVreader не действует как список словарей. Есть ли способ выводить печатные строки из моего CSVreader в словарь, поэтому его можно преобразовать в словарь списков? – user3692506

+0

В соответствии с документами это должно работать. Если это не так, укажите четкое описание ошибки. – wonce

+0

Я плачу. Он работает правильно. Огромное спасибо! – user3692506

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