首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未使用int布尔判定神秘地添加到dict中的值- python

未使用int布尔判定神秘地添加到dict中的值- python
EN

Stack Overflow用户
提问于 2017-12-04 08:06:39
回答 0查看 25关注 0票数 0

我在这里尝试将值递增到4个字典(字典是di_A1,di_A2,di_B1,di_B2)。

我正在检查文件中位置3-9的行,其中3-9是父母的名字,11是性别,12-14是年龄。

位置11将始终是1或2.1。1-男性,2-女性。位置12-14将包含一个从001 > 150表示年龄的数字。

这些字符中的第一个决定"parent“是否应该保存到A或B字典。其余3个值确定父代的年龄,这些值被分组为年龄超过或低于50岁的值。

字典:

di_A1存储父亲的名字,50岁以下;

di_A2存储着爸爸的名字,超过50个;

di_B1存储妈妈的名字,小于50;

di_B2存储着妈妈的名字,超过50个;

稍后,我将它们打印到以下5列中的.csv文件中:

名字

父亲的数量为50人或以下

父亲数量50人或以上

50个或以下的母亲数量

50岁或以上的母亲数量

我将它们保存到字典中的第一个片段是不工作的。我想这是当我检查年龄值被破坏的时候。

def main():

代码语言:javascript
复制
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岁,等等。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47624723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档