題目來(lái)自生信技能樹(shù)論壇

從這題開(kāi)始,我決定只用python做
python很強(qiáng)大,熟練了可以做其他語(yǔ)言能做的大部分事情
import glob
import collections
mydict=collections.OrderedDict()
list_dirs=glob.glob("./*.txt")
for i in list_dirs:
for line in open (i):
array=line.strip().split("\t")
if array[0] not in mydict:
mydict[array[0]]=[array[1]] #注意array[1]外面的中括號(hào)
else:
mydict[array[0]].append(array[1]) #字典中,對(duì)一個(gè)key增加多個(gè)value的方法
for gene_name in mydict:
print("%s\t%s"%(gene_name,"\t".join(mydict[gene_name])))
部分結(jié)果如下

總結(jié)一下知識(shí)點(diǎn):
1.關(guān)于glob
這個(gè)題目一開(kāi)始困擾我的問(wèn)題就是文件讀取的問(wèn)題,因?yàn)槟夸浵掠刑辔募喜?br>
這邊提供的一個(gè)思路就是把所有待讀取文件的路徑存到列表中然后對(duì)列表遍歷。這里所用到的就是python中g(shù)lob包中的glob函數(shù)
list_dirs=glob.glob("./")
當(dāng)前文件下的文件路徑讀取到列表中
2.一個(gè)key對(duì)應(yīng)多個(gè)value,而value形成一個(gè)列表。
對(duì)第一個(gè)文件就是建立單一的鍵值對(duì)
注意?。?!
因?yàn)槲覀冎篮竺娴膙alue會(huì)形成list,所有這里鍵值對(duì)的構(gòu)建中value要加[]
dict[key]=[value1]
同一個(gè)key,添加新的value的方法是
dict[key].append(value2)
3.一個(gè)key,多個(gè)value,怎么打印的問(wèn)題
一般我們打印字典中所有的鍵值對(duì)的時(shí)候,用的是
for k,v in dict.items():
print(k,v)
但這里只有一個(gè)key,所以是
for key in dict:
print("%s\t%s"%(key,"\t".join(dict[key])))
"t".join()可以把list中的value用"\t"連接起來(lái)