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

题目来自生信技能树论坛

image.png

从这题开始,我决定只用python做
python很强大,熟练了可以做其他语言能做的大部分事情

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]外面的中括号
      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"连接起来

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,875评论 0 10
  • 我喜欢爱笑的姑娘 可不是一笑就把我遗忘 心伤 何必去追求什么地老天荒 用尽一切 不过是几页纸张 迷茫 何必去冥思苦...
    你娃阅读 142评论 2 2
  • 是否感到迷茫 是否心存犹豫 在选择间挣扎 在进退里两难 请问一下自己 家人是否已经无忧 未来是否有清晰方向 每一天...
    无人独卧阅读 169评论 0 0
  • 灯,天上的星雨落在尘世 燃烧的是光,指人前进,在黑的夜里 溪水般的珍珠 洗濯着雾蒙蒙的心 向阳的延伸 温润着夜的黑...
    月铃阅读 192评论 0 2
  • 很多成功人士都告诉我们,去做你真正热爱的事,能点燃你热情的事,你就会成功。 热情是什么?是能让你的生命发酵的东西,...
    s甜甜s阅读 276评论 0 0