在python中打开csv文件以自定义词典
我想知道如何加载此csv文件:在python中打开csv文件以自定义词典,python,csv,dictionary,Python,Csv,Dictionary,我想知道如何加载此csv文件: Epitope,ID,Frequency,Assay AVNIVGYSNAQGVDY,123431,27.0,Tetramer DIKYTWNVPKI,887473,50.0,3H LRQMRTVTPIRMQGG,34234,11.9,Elispot 进入python字典,如下所示: d = {'AVNIVGYSNAQGVDY': [ID[123431],Frequency[27.0],Assay['Tetramer']], 'DIKYTWNVPKI':
Epitope,ID,Frequency,Assay
AVNIVGYSNAQGVDY,123431,27.0,Tetramer
DIKYTWNVPKI,887473,50.0,3H
LRQMRTVTPIRMQGG,34234,11.9,Elispot
进入python字典,如下所示:
d = {'AVNIVGYSNAQGVDY': [ID[123431],Frequency[27.0],Assay['Tetramer']], 'DIKYTWNVPKI': [ID[887473],Frequency[50.0],Assay['3H']], 'LRQMRTVTPIRMQGG': [ID[34234],Frequency[11.9],Assay['Elispot']]}
['AVNIVGYSNAQGVDY', '123431', '27.0', 'Tetramer']
我正在使用列表,因为我的实际文件更大,我将向这些列表附加更多值 首先,你知道这个模块吗?如果没有,请阅读介绍和示例,了解如何获得可数行。把每一张打印出来,它们看起来像这样:
d = {'AVNIVGYSNAQGVDY': [ID[123431],Frequency[27.0],Assay['Tetramer']], 'DIKYTWNVPKI': [ID[887473],Frequency[50.0],Assay['3H']], 'LRQMRTVTPIRMQGG': [ID[34234],Frequency[11.9],Assay['Elispot']]}
['AVNIVGYSNAQGVDY', '123431', '27.0', 'Tetramer']
或者,如果您使用读写器
:
{'Epitope': 'AVNIVGYSNAQGVDY', 'ID': '123431',
'Frequency': '27.0', 'Assay': 'Tetramer'}
但是你不想要一个列表,或者一个字典列表;您需要一个列表字典,其中每个键是一行中的表位
,对应的值是其他三个值,对吗?所以…只需将每一行插入字典即可:
d = {}
with open(path, 'rb') as f:
with csv.DictReader(f) as reader:
for row in reader:
d[row['Epitope']] = [row['ID'], row['Frequency'], row['Assay']]
(如果使用普通的读卡器
而不是读卡器
,这将更加紧凑,但我认为如果几个月后再回到代码上来,这种方式会更具可读性。)
您还希望转换这些值并将它们用作另一个查找的键,但这应该很简单。例如:
row_id = ID[int(row['ID'])]
row_frequency = Frequency[float(row['Frequency'])]
row_assay = Assay[row['Assay']]
d[row['Epitope']] = [row_id, row_frequency, row_assay]
通过将行转换作为函数编写,然后使用字典理解,您可以稍微清理一下:
with open(path, 'rb') as f:
with csv.DictReader(f) as reader:
d = {row['Epitope']: process_row(row) for row in reader}