为了账号安全,请及时绑定邮箱和手机立即绑定

生信编程实战第4题(python)

标签:
Python

webp

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])))

部分结果如下


webp

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人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消