#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),...]