【发布时间】:2017-01-25 01:50:54
【问题描述】:
对 Python 非常陌生,我现在正在尝试编写一个程序来处理来自多个文本文件的前几行的数据。到目前为止一切顺利 - 获取数据并重新格式化以输出。
现在我想根据它在 csv 文件中的行来更改一个输出字段的格式。该文件为 15 行,列数可变。
这个想法是:
- 我预加载了 CSV 文件 - 我想将其硬编码到列表或字典中 - 不确定下一步哪个更适合。
- 遍历列表/字典中的 15 行,如果找到匹配项 - 将输出设置为同一行的第 1 列。
示例数据:
BIT, BITSIZE, BITM, BS11, BIT, BS4, BIT1, BIT_STM
CAL, ID27, CALP, HCALI, IECY, CLLO, RD2, RAD3QI, ID4
DEN, RHO8[1], RHOZ1, RHOZ2, RHOB_HR, RHOB_ME, LDENX
DENC, CRHO, DRHO1, ZCOR2, HDRH2, ZCORQK
DEPT, DEPTH, DEPT,MD
DPL, PDL, PORZLS1, PORDLSH_Y, DPRL, HDPH_LIM, PZLS
DPS, HDPH_SAN1, DPHI_SAN2, DPUS, DPOR, PZSS1
DTC, DTCO_MFM[1], DT4PT2, DTCO_MUM[1], DTC
DTS, DT1R[1], DTSH, DT22, DTSM[1], DT24S
GR, GCGR, GR_R3, HGR3, GR5, GR6, GR_R1, MGSGR
NPL, NEU, NPOR_LIM, HTNP_LIM, NPOR, HNPO_LIM1
NPS, NPRS, CNC, NPHILS, NPOR_SS, NPRS1, CNCS, PORS
PE, PEFZ_2, HPEF, PEQK, PEF81, PEF83, PEDN, PEF8MBT
RD, AST90, ASF60, RD, RLLD, RTCH, LLDC, M2R9, LLHD
RS, IESN, FOC, ASO10, MSFR, AO20, RS, SFE, LL8, MLL
例如:
BIT, BITSIZE, BITM, BS11, BIT, BS4, BIT1, BIT_STM
返回BIT
问题:
- 列表或字典是否会提高搜索速度?
- 如果我使用 csv 模块加载数据,每行的列数不同是否重要?
- 有没有不使用循环搜索列表或字典的方法?
我尝试加载到列表和搜索:
import csv
with open('lookup.csv', 'rb') as f:
reader = csv.reader(f)
codelist = list(reader)
这是否适用于搜索匹配代码searchcode?
for subcodes in codelist:
if searchcode in subcodes:
print "Found it!", subcodes[0]
break
【问题讨论】:
标签: python list python-2.7 csv dictionary