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

Python如何通过flat_type2列表映射户型值完成循环列表输出

户型数值编码映射实现方案

核心实现逻辑

  • 首先修复原代码flat_type2列表的语法错误:原代码[5,'5 room'位置缺失闭合方括号与分隔逗号,运行会直接抛出语法异常。
  • 把存储编码-名称对应关系的flat_type2列表转换为字典结构,键存户型数值编码,值存对应户型字符串,查找效率远高于遍历列表匹配。
  • 组装dlist数据时,不再直接存入row[1]的数值编码,而是用编码作为键从映射字典中取出对应的户型名称存入,其余城镇、剩余租约、转售价格字段保持原有逻辑不变。
  • 输出打印逻辑无需额外修改,直接读取dlist里已经替换好的户型字符串即可。

修正后完整代码

import numpy as np
def trans_closeTo():
    
    header=['Town', 'Flat Type', 'Remaining Lease', 'Resale Price']
    price=int(input('Enter resale price amount:'))
    # 修复原列表语法错误,同时直接转为映射字典
    flat_type_map = {
        2:'2 room',
        3:'3 room',
        4:'4 room',
        5:'5 room',
        6:'Executive',
        7:'Multi generation'
    }
    print()
    print(f'{header[0]:<15} {header[1]:<15}{header[-2]:<20}{header[-1]}')           

    data2= open('ASG1_data_dictionary.csv')
    data3= data2.readlines()
  
    dlist=[]
    
    for row in data:
        if price*0.95 <= row [8] <= price*1.05:
            whole_row=data3[int(row[0])].split(',')
            # 此处替换原row[1]数值为映射后的户型名称
            flat_name = flat_type_map[row[1]]
            dlist.append([whole_row[0], flat_name, row[7],row[8]])
     
    for town,flat,lease,resale in dlist:
            print(f'{town.capitalize():<15} {flat:<15}{int(lease):<20}{resale:.2f}')
 
trans_closeTo()

注:如果担心数据里存在未收录的户型编码导致KeyError,可以把取映射的代码改成flat_type_map.get(row[1], 'Unknown'),遇到未匹配编码时会显示Unknown不会中断程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:24:35