xuxa_xy 发表于 2014-04-11 19:13

读入二维数组,取第一、二列作为字典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....求解答

ssfjhh 发表于 2014-04-11 19:39

with open('2.txt', 'r') as f:
    gene = dict(line.split() for line in f.readlines())
两行就够了。

xuxa_xy 发表于 2014-04-11 22:12

谢谢啊。。但是文件内容是四列的。。这样子直接用字典不行啊- -。。。回复 2# ssfjhh


   

ssfjhh 发表于 2014-04-12 19:21

回复 3# xuxa_xy


    line.split(maxsplit = 1)

reyleon 发表于 2014-04-13 21:43

本帖最后由 reyleon 于 2014-04-13 21:58 编辑

#!/usr/bin/python
gene = {}
for r in open('2.txt'):
      k = r.split()
      gene] = k
print gene

ssfjhh 发表于 2014-04-14 10:06

回复 5# reyleon


    看二楼,真不需要这么多代码,两行就够了。

reyleon 发表于 2014-04-14 10:14

回复 6# ssfjhh


    你试过没? 我试过不行,加上 maxsplit 也不符合楼主的要求. {:3_185:}虽然俺也是py 新手.

ssfjhh 发表于 2014-04-14 10:23

回复 7# reyleon


    试过才发的,没有问题(要加maxsplit=1)。

难道python2不行?

ssfjhh 发表于 2014-04-14 10:30

本帖最后由 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())不好意思,是我没有理解楼主的意思,稍作修改。依然是两行。

reyleon 发表于 2014-04-14 10:32

回复 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
查看完整版本: 读入二维数组,取第一、二列作为字典key、value