image.png
从这题开始,我决定只用python做
python很强大,熟练了可以做其他语言能做的大部分事情
import globimport 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]外面的中括号 else: mydict[array[0]].append(array[1]) #字典中,对一个key增加多个value的方法for gene_name in mydict: print("%s\t%s"%(gene_name,"\t".join(mydict[gene_name])))
部分结果如下
image.png
总结一下知识点:
1.关于glob
这个题目一开始困扰我的问题就是文件读取的问题,因为目录下有太多文件要合并
这边提供的一个思路就是把所有待读取文件的路径存到列表中然后对列表遍历。这里所用到的就是python中glob包中的glob函数
list_dirs=glob.glob("./")
当前文件下的文件路径读取到列表中
2.一个key对应多个value,而value形成一个列表。
对第一个文件就是建立单一的键值对
注意!!!
因为我们知道后面的value会形成list,所有这里键值对的构建中value要加[]
dict[key]=[value1]
同一个key,添加新的value的方法是
dict[key].append(value2)
3.一个key,多个value,怎么打印的问题
一般我们打印字典中所有的键值对的时候,用的是
for k,v in dict.items():
print(k,v)
但这里只有一个key,所以是
for key in dict:
print("%s\t%s"%(key,"\t".join(dict[key])))
"t".join()可以把list中的value用"\t"连接起来
作者:天秤座的机器狗
链接:https://www.jianshu.com/p/7200fa53e9f6
點擊查看更多內容
1人點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦