2018-06-29(生信第7题目)

本次题目来自Rosalind


对于多行的fasta序列,计算GC含量,并将最大的GC 含量打印出来。

因为这道题并不是简单的计算各个序列的GC,而是要选出最大的GC含量,所以用到了排序的方法,这里主要的一个新的知识点就是关于字典的排序,用itemgetter包可以对字典按key或value排序

先说说如果只是计算GC含量怎么写:


A

这个是没有用字典的方式,用了18行代码,而且最后一个序列在循环里面是没办法处理,需要在循环外补2行代码

所以,考虑用字典的方法,就是将序列名字和对应序列构建成一个字典,并且序列会连接成一行,然后遍历字典,对value作GC含量的处理,最后打印序列名和gc含量:


B

这样只用了15行代码,并且不用对最后一个序列做特殊处理就能完成。而且能看出来,字典是无序的。所以真正到本题,如果用到字典就需要itemgetter这个包了。

先看看我最开始没用字典是怎么做的:


C


将所有的GC含量算出来存到列表中,然后岁列表取最大值。可以看出,是可以计算的。但是有一个问题,没办法打印出来对应的序列,所以这个方法不可取。

必须用到字典

即对第二个脚本B做一些修改即可,在脚本B中再加一个字典,在遍历字典并计算GC含量时,同时将序列名字和GC含量存入另一个字典

然后对新的字典排序,按key排序


D

sorted(dict.items(),key=itemgetter(1))

这里“1”是指按从低到高排

如果是“0”则是从高往低排

因为排序后的字典是有序的,所以可以利用索引取出来需要的值

以上。

你可能感兴趣的:(2018-06-29(生信第7题目))