我的代码可以查看一个充满tsv文件的文件夹,并将该文件的名称作为键,并将列标题作为dict中的值。
row1 =[]
listdict=[]
for f in files:
with open(dir_path +'/'+f, 'rU') as file:
reader = csv.reader(file)
row1 = next(reader)
dict = {f: row1}
listdict.append(dict)
尝试访问dict listdict['file_name.tsv']
时,出现错误
*** TypeError: list indices must be integers, not str
使用整数listdict[0]
时,我似乎无法单独访问值,因为它们全部聚集在一起作为1值。
{'file_name.tsv': ['header1\theader2\theader3\theader4']}
如何单独访问每个标头。我的目标是创建一个csv输出,列出文件名和所有相关标题。
答案 0 :(得分:4)
如果需要有序的元素列表,则使用list
。
当您需要一组无序的键值对时,会使用dict
。
如果您想按文件名(例如listdict['file_name.tsv']
)查询文件标题,则需要使用dict
。此外,如果要查询文件中的单个文件头,则需要使用list
来保留订单:
listdict={}
for f in files:
with open(dir_path +'/'+f, 'r') as file:
reader = csv.reader(file, delimiter='\t')
row1 = next(reader) # stores first row of tsv file in a list
listdict[f] = row1
listdict
中的条目如下所示:
{'file_name.tsv': ['header1', 'header2', 'header3', 'header4']}
listdict['file_name.tsv']
会给你['header1', 'header2', 'header3', 'header4']
。
listdict['file_name.tsv'][0]
会为您提供值'header1'
。
答案 1 :(得分:0)
您已通过listdicts = []
创建了一个列表。
改为创建词典:listdicts = {}
。
listdict={}
for f in files:
with open(dir_path +'/'+f, 'r') as file:
reader = csv.reader(file)
listdict[f] = next(reader).split() # split will split the headers by `\t`
并使用listdict['file_name.tsv'][0]
访问相应的第一个标头。
答案 2 :(得分:0)
你可能想要这个
filedict={}
for f in files:
with open(dir_path +'/'+f, 'rU') as file:
reader = csv.reader(file)
row1 = next(reader)
filedict[f] = row1