У меня проблема со сжатыми значениями в одном словаре на основе значения другого.
Я составил такой код ниже, который представляет идею:
1) Извлечение данных в список
2) Принятие уникальных значений для следующей обработки
3) Цикл для подсчета количества мужчин и женщин только для «несчастного случая»
Проблема:
Каково эффективное решение для подсчета значений для каждой категории в уникальном наборе.Я имею в виду, что если бы у меня было 1000 уникальных категорий, я не хочу писать 1000 «если»
Это мой первый вопрос в stackoverflow, поэтому я прошу прощения за любую ошибку, которую я сделал :)
Original data (first 5 rows):
[
['', 'year', 'month', 'intent', 'police', 'sex', 'age', 'race', 'hispanic', 'place', 'education'],
['1', '2012', '01', 'Suicide', '0', 'M', '34', 'Asian/Pacific Islander', '100', 'Home', '4'],
['2', '2012', '01', 'Suicide', '0', 'F', '21', 'White', '100', 'Street', '3'],
['3', '2012', '01', 'Suicide', '0', 'M', '60', 'White', '100', 'Other specified', '4'],
['4', '2012', '02', 'Suicide', '0', 'M', '64', 'White', '100', 'Home', '4']
]
# Accidents list
accidents_list = [row[3] for row in data] # list of all accidents
print(set(accidents_list)) # unique set
{'Убийство', 'NA', 'Undefined', 'Случайное', 'Suicide'}
gender_list = [row[5] for row in data]
print(gender_list)
['M', 'F', 'M',«М», «М», «М», «М», «М», «М», «М», «М», «М», «М», «М», «М», «М»',' M ',' M ',' M ',' M ',' M ',' F ',' F ',' M ',' M '....]
# Accidents dict and loop over it
accidents_gender = {}
for i, v in enumerate(gender_list):
if v not in accidents_gender:
accidents_gender[v] = 0
if accidents_list[i] == 'Accidental':
accidents_gender[v] += 1
print(accidents_gender) # printing only values for accidental
{'M': 1421, 'F': 218}