Как сделать ключ-значение словаря с помощью CSV-файла?

#python #csv #dictionary

Вопрос:

У меня CSV-файл выглядит так, имеет 8 столбцов. Я хочу сделать ключ словаря с отделом, а значение-с количеством отделов. Проверьте изображение файла cvs :

введите описание изображения здесь

пример распечатки

 {'Japanese': 1,
 'physiology': 1,
 'economics': 2,
 'business': 1,
 'biology': 1,
 'software': 9,
 'smart iot': 1,
 'medical': 1,
 'big data': 2}
 

поэтому я написал код таким образом, но он плохо работает.

 names = ['japanese', 'psychology', 'economics', 'buiseness', 'biology', 'medical', 'software', 'smart IOT', 'big data', 'electronics', 'contents IT']
names_count = len(names)
unique_dept_names = set()
unique_dept_names = {name:[] for name in names}
with open('fake_student_records.csv', mode='r', encoding='utf-8') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    for row in csv_reader:
        for name in names:
            unique_dept_names[name].append(row['department'])
number = {name:0 for name in names}
for name in names:
    number[name] = names_count 
    
print(number)
 

Ответ №1:

Вы могли бы использовать коллекции

 import csv
import collections
departments = collections.Counter()
with open('fake_student_records.csv') as input_file:
    next(input_file) #skip first row since its column name
    for row in csv.reader(input_file, delimiter=','):
        departments[row[2]]  = 1
print ('Number of Japanese departments: '  str(departments['Japanese']))
print (departments.most_common())
 

Пример вывода:

 Number of Japanese departments: 3
[('Japanese', 3), ('economics', 1), ('business', 2),...]