如何读取CSV文件数据存入字典并生成图表 循环实现方法指导
实现代码
你可以直接基于需求改造原有代码,不需要额外引入第三方依赖:
import csv # 初始化连通关系字典 connection_dict = {} # 读取连通表构建站点连通关系 with open('lineDefinition.csv', newline='') as f: for row in csv.DictReader(f): s1 = int(row['station1']) s2 = int(row['station2']) # 双向添加连通关系 if s1 not in connection_dict: connection_dict[s1] = [] connection_dict[s1].append(s2) if s2 not in connection_dict: connection_dict[s2] = [] connection_dict[s2].append(s1) # (可选)如果需要用站点名称代替编号,读取站点表生成映射 station_map = {} with open('stations.csv', newline='') as f: for row in csv.DictReader(f): st_id = int(row['id']) st_name = row['display_name'] if row['display_name'] != 'NULL' else row['name'] station_map[st_id] = st_name # (可选)生成站点名形式的连通字典 name_connection_dict = { station_map[k]: [station_map[v] for v in val] for k, val in connection_dict.items() } # 验证输出 print("编号形式连通字典:", connection_dict) print("名称形式连通字典:", name_connection_dict)
逻辑说明
- 遍历
lineDefinition.csv的每一行时,双向添加两个站点的连通关系,符合地铁/铁路站点的无向连通特性 - 所有站点编号统一转成整数格式,避免CSV读取默认的字符串类型导致匹配出错
- 可选的名称转换逻辑优先使用
display_name字段,为空时 fallback 到name字段,适配示例中的NULL值情况
内容的提问来源于stack exchange,提问作者TheMailOfWork
相关产品推荐
相关产品推荐

