Хобрук: Ваш путь к мастерству в программировании

значение не добавляется в dict с использованием загадочного логического решения int - python

Я пытаюсь увеличить значения до 4 словарей здесь (словарь di_A1, di_A2, di_B1, di_B2).

Я проверяю строки в файле на позициях 3-9 для имени родителя, затем позиции 11 для пола и позиции 12-14 для возраста.

Позиция 11 всегда будет 1 или 2. 1 - мужчина, 2 - женщина. Позиции 12-14 будут содержать число от 001 > 150 для возраста.

Первый из этих символов определяет, следует ли сохранить «родительский» словарь в словарь A или B. Остальные 3 значения определяют возраст родителя, которые группируются в значения старше или младше 50 лет.

словари:

di_A1 хранит имена пап до 50;

di_A2 хранит имена пап, более 50;

di_B1 хранит имена мам до 50;

di_B2 хранит имена мам, более 50;

Позже я печатаю их в файл .csv в этих 5 столбцах:

Имя

количество отцов 50 или младше

количество отцов 50 и старше

количество мам 50 или младше

количество мам 50 и старше

Самая первая часть, где я сохраняю их в словарь, не работает. Я думаю, что когда я проверяю значение возраста, которое нарушается.

деф основной():

import re # I use this later, but maybe I should be using it here?

# find all files to check 
filelist = glob.glob("FOLDER/subfolder/names*/*.TXT")

di_A1 = {}
di_A2 = {}
di_B1 = {}
di_B2 = {}

for file in filelist: 
    infile = open(file,"r")
    for line in infile:
        sex_age = int(line[10:14]) #11 stores sex, 12-14 store age
        firstname = line[2:9] # 3-9 store first name

        if (sex_age < 1051) : #if male 50 or under
            di_A1[firstname] = di_A1.get(firstname,0) + 1
        elif (sex_age < 1150) : #if male 50 or over
            di_A2[firstname] = di_A2.get(firstname,0) + 1
        elif (sex_age < 2051) : #if female 50 or under
            di_B1[firstname] = di_B1.get(firstname,0) + 1
        elif (sex_age < 2150) : #if female 50 or over
            di_B2[firstname] = bi_B2.get(firstname,0) + 1

    infile.close()

больше после этого, но я уверен, что все работает

Сейчас ничего не сохраняется ни в одном из словарей. Что я делаю не так?

Должен отметить, что я думал разбить это число на большее количество возрастных групп — 20 лет и младше, 21–35 лет, 36–45 лет, 46–55 лет, 56–65 лет и т. д.


Ответы:


1

... Ну, как оказалось, я сделал опечатку в пути к файлу. (Смущает, так как я устранял эту проблему весь день ......)

Программа работает так, как показано выше.

04.12.2017
Новые материалы

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

Расистский и сексистский робот, обученный в Интернете
Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

Управление состоянием в микрофронтендах
Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..