实验三 集合和字典(二)

一、实验目的

  1. 使用合适的数据结构(如:列表,字典、集合等)进行程序编写

二、实验环境

  1. 操作系统:Windows

  1. 主要软件:Jupyter notebook

  1. 实验内容

1. 已知字典:{'a': [1, 2, 3], 'b': [2, 3, 4], 'c': [5, 6, 7]}。请计算该字典3个key对应列表第二个元素相加的值,并输出到屏幕。

提示:把字典赋值给变量adict,那么adict['a'][1]的值即为a对应列表的第二个元素。

2. 已知geneList.txt包含100个NCBI Entrez gene ID,请从“人类基因组基因信息”中提取这100个基因的名称(Symbol),所在为染色体信息(chromosome)和基因描述信息(description),并输出到屏幕。

人类基因组基因信息下载地址:https://ftp.ncbi.nlm.nih.gov/refseq/H_sapiens/Homo_sapiens.gene_info.gz

注意:实验数据“geneList.txt”见QQ群文件。

(1) 首先读取“人类基因组基因信息”文件存入一个字典,该字典的key为gene ID,值为列表,列表内容包含基因名称、染色体信息、基因描述。输出key为“414201”对应的列表内容。

提示:可使用with语句打开文件

print(adict['414201']):输出结果为

['ZNF32-AS3', '10', 'ZNF32 antisense RNA 3']

(2) 再读取geneList.txt文件;每读取一行就判断该gene ID是否存在于上面的字典中;如果存在则输出该gene ID已经对应的列表的内容。

提示:可使用with语句打开文件

输出格式结果如下(参考):

四、实验报告

1. 使用jupyter notebook文档填写实验报告,导出并提交pdf格式文件。

文件命名规则:”星期几+学号+姓名+实验3.pdf。

2. 记录实验步骤和实验结果

3. 记录实验中遇到的问题,如何解决的。

1.

adict={'a': [1, 2, 3], 'b': [2, 3, 4], 'c': [5, 6, 7]}
r=adict['a'][1]+adict['b'][1]+adict['c'][1]
print(r)

2

gene_info = {}
with open('C:/Users/Polo/Desktop/Homo_sapiens.gene_info','r')as f:
    for line in f.readlines():
        alist=line.split("\t")
        key=str(alist[1])
        gene_info.setdefault(key,[]).append(alist[2])
        gene_info.setdefault(key,[]).append(alist[6])
        gene_info.setdefault(key,[]).append(alist[8])
print(gene_info['414201'])

3

gene_info = {}
with open('C:/Users/Polo/Desktop/Homo_sapiens.gene_info','r')as f:
    for line in f.readlines():
        alist=line.split("\t")
        key=str(alist[1])
        gene_info.setdefault(key,[]).append(alist[2])
        gene_info.setdefault(key,[]).append(alist[6])
        gene_info.setdefault(key,[]).append(alist[8])
with open('C:/Users/Polo/Desktop/python 高级编程/geneList.txt','r')as f:
    for line in f.readlines():
        line=line.strip()
        if line in gene_info:
            print("{:<10} {:<10}  {:<5} {:<10}".format(line,gene_info[line][0],gene_info[line][1],gene_info[line][2]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值