读入二维数组,取第一、二列作为字典key、value
文件内容:NM_032291 chr1 + 66999824
NM_001145277 chr1 + 16767166
NM_001080397 chr1 + 8384389
我要将文件内容读入,生成一个二维数组,然后取第一列作为字典的key,第二列作为value
想要的结果时这样的:gene={'NM_032291':'chr1','NM_001145277':'chr1','NM_001080397':'chr1'}
代码:
file=open("2.txt",'r')
file_content=file.read()
chromosome=[]
for i in file_content.split('\n'):
chromosome.append(i.split('\t'))
gene={}
i=[]
for i in chromosome:
gene]=i
运行一直出错:
Traceback (most recent call last):
File "./lab7.py", line 11, in <module>
gene]=i
IndexError: list index out of range
如果我一个个输入gene]=chromosome能加进字典里去,用循环为什么就会报错QAQ
python 初学T T....求解答 with open('2.txt', 'r') as f:
gene = dict(line.split() for line in f.readlines())
两行就够了。 谢谢啊。。但是文件内容是四列的。。这样子直接用字典不行啊- -。。。回复 2# ssfjhh
回复 3# xuxa_xy
line.split(maxsplit = 1)
本帖最后由 reyleon 于 2014-04-13 21:58 编辑
#!/usr/bin/python
gene = {}
for r in open('2.txt'):
k = r.split()
gene] = k
print gene 回复 5# reyleon
看二楼,真不需要这么多代码,两行就够了。 回复 6# ssfjhh
你试过没? 我试过不行,加上 maxsplit 也不符合楼主的要求. {:3_185:}虽然俺也是py 新手. 回复 7# reyleon
试过才发的,没有问题(要加maxsplit=1)。
难道python2不行? 本帖最后由 ssfjhh 于 2014-04-14 10:31 编辑
回复 7# reyleon with open('2.txt', 'r') as f:
gene = dict(line.split()[:2] for line in f.readlines())不好意思,是我没有理解楼主的意思,稍作修改。依然是两行。 回复 8# ssfjhh
有可能吧,我用的 2.7.6 ,参数也不是用 maxsplit=1 的用法.# cat t.py
#!/usr/bin/python
with open('2.txt', 'r') as f:
gene = dict(line.split(None ,1) for line in f.readlines())
print gene
#
#
# python t.py
{'NM_001145277': 'chr1 + 16767166\n', 'NM_001080397': 'chr1 + 8384389\n', 'NM_032291': 'chr1 + 66999824\n'}
# cat 2.txt
NM_032291 chr1 + 66999824
NM_001145277 chr1 + 16767166
NM_001080397 chr1 + 8384389
# python -V
Python 2.7.6
#
页:
[1]
2