You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python数据过滤代码中指定索引行的功能咨询

代码中标注行的索引指向与功能解析

问题背景

尝试从指定输入文件过滤数据,但无法理解Python代码中标注#Line1、#Line2、#Line3的行里索引的具体指向及功能。

输入文件内容

Peter, Haddad, M, Dekweneh, 5100
Petra, Yahya, Haddad, F, Jbeil, 4321
Walid, Khaled, M, Beirut, 1726
Sako, Kazanjian, M, Ain Ebel, 1121
Patrick, Haddad, M, Dekweneh, 5100
Joseph, Yahya, M, Jounieh, 36
Zoulaykha, Haddad, F, Dekweneh, 5100
Marina, Saadeh, Haddad, F, Chwaifet, 1819
Rami, Saad, M, Jbeil, 4321
Bernard, Khaled, M, Beirut, 1726
Charbel, Kazanjian, M, Ain Ebel, 1121
Cynthia, Khaled, F, Beirut, 1726
Najib, Mansour, M, Beirut, 1726

待解析代码

for line in in_lines:
    first_name = line.strip().split(' , ')[0]
    
    
    if len(line.strip().split(', ')) == 5:
        reg_num = line.strip().split(', ')[4]
        reg_city= line.strip().split(', ')[3]
        last_name = line.strip().split(', ')[1]
        m_name= ''
        if line.strip().split(', ')[2] == 'F':
            err_file.write(line)
            
    elif len(line.strip().split(', ')) == 6:
        reg_num = line.strip().split(', ')[5]
        reg_city= line.strip().split(', ')[4]
        last_name = line.strip().split(', ')[1]
        m_name= line.strip().split(', ')[2]
        
    if reg_num not in dict_fam:
        dict_fam[reg_num] = [[first_name, last_name, m_name, reg_city]]
    else:
        if last_name == dict_fam[reg_num][0][1]: #Line 1
            dict_fam[reg_num].append([first_name,last_name,m_name,reg_city])
            
        else:
             err_file.write(line)
                
items = dict_fam.items()

for item in items:
    out_file.write(item[1][0][1] + ': ') #Line 2
    for i in item[1]:
        out_file.write(i[0] + ', ') #Line 3
          
    
    out_file.write('\n')
    
print(dict_fam)

in_file.close()
out_file.close()
err_file.close()

核心结构说明

先明确dict_fam的结构:这是一个按**注册编号reg_num**分组的字典,键是注册编号,值是一个列表——列表里的每个元素是一条成员信息的子列表,子列表格式为[名字, 姓氏, 中间名, 注册城市]。比如第一条数据处理后,dict_fam["5100"]的值为[["Peter", "Haddad", "", "Dekweneh"]]。


Line 1: if last_name == dict_fam[reg_num][0][1]:

  • 索引指向拆解:
    • dict_fam[reg_num]:获取当前注册编号对应的所有成员信息列表
    • [0]:取该列表里的第一条成员记录(最早加入的那条)
    • [1]:从这条记录中提取姓氏(子列表的第2个元素是姓氏)
  • 功能:判断当前数据的姓氏,和该注册编号下已存在的第一条记录的姓氏是否一致。逻辑上同一个注册编号应属于同一家族,一致则将当前记录加入列表;不一致则写入错误文件。

Line 2: out_file.write(item[1][0][1] + ': ')

  • 索引指向拆解:
    • item是dict_fam.items()返回的键值对元组,格式为(注册编号, 成员信息列表)
    • item[1]:取元组中的成员信息列表部分
    • [0]:取该列表里的第一条成员记录
    • [1]:提取这条记录里的姓氏
  • 功能:向输出文件写入当前注册编号对应的家族姓氏,作为该组记录的标题(比如Haddad: )。

Line 3: out_file.write(i[0] + ', ')

  • 索引指向拆解:
    • i是遍历成员信息列表时的每条子记录,格式为[名字, 姓氏, 中间名, 注册城市]
    • [0]:提取该子记录里的名字(子列表的第1个元素)
  • 功能:遍历当前注册编号下的所有成员,把每个成员的名字写入输出文件,用逗号分隔(比如Peter, Patrick, Zoulaykha, )。

内容的提问来源于stack exchange,提问作者MD500000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:15:38