首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在此脚本中的for循环中使用for循环?

如何在此脚本中的for循环中使用for循环?
EN

Stack Overflow用户
提问于 2013-10-02 10:02:35
回答 1查看 52关注 0票数 0

我正在尝试编写一个脚本,从包含蛋白质ID的文件中创建一个字典列表。到目前为止,我是这样写的:

代码语言:javascript
复制
#import packages
import sys

#get the file from the command line
map_file =  sys.argv[1]


#create dictionaries containing the different proteins IDs
def get_mapping(map_file):
        file = open(map_file)
    result = list() 
    column_count = file.readline().split('\t')  
    n = len(column_count)
    for i in range(n-1):
        result.append({})
    for line in file:
        word = line.split('\t')
        for w in range(n):
            if word[n-1] <> word[0]:
                result[n-2][word[n-1]] = word[0]
            n = n-1         
    return result

print get_mapping(map_file)

因此,输入文件包含多个行,每一行包含特定蛋白质的2-4个不同ID。我想要创建一个字典列表,其中第一个ID作为值,另一个ID作为键。当我运行这个脚本时,它做的正是我想要它做的事情,但只对输入文件中的第一行。要对输入文件中的每一行进行更改,需要更改什么?

蛋白质文件如下所示:

代码语言:javascript
复制
Ensembl_Protein_ID UniProt/SwissProt_Accession UniProt/TrEMBL_Accession RGD_ID 
ENSRNOP00000000008 P18088 C9E895 2652 
ENSRNOP00000000008 P18088 B3VQJ0 2652 
ENSRNOP00000000009 D3ZEM1 1310201 
ENSRNOP00000000025 B4F7C7 
ENSRNOP00000000029 Q9ES39 620038 
ENSRNOP00000000037 Q7TQM3 735156 
ENSRNOP00000000052 O70352 Q6IN14 69070 
ENSRNOP00000000053 Q9JLM2 68400 
ENSRNOP00000000064 P97874 621589 
ENSRNOP00000000072 P29419 621377 
ENSRNOP00000000074 B2RZ28 1304584 
ENSRNOP00000000078 D3ZDI7 1308022 
ENSRNOP00000000080 Q5XI68 1305201 
ENSRNOP00000000085 D3ZDH7
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-02 10:52:25

您可以在内部n循环中减少for,但不要将其重置为原始值。只需在n = len(column_count)循环之前或之后添加for w in range(n):,就可以了。或者更好的是,直接使用w变量,而不是减少n

代码语言:javascript
复制
for w in range(1, len(word)):
    if word[w] <> word[0]:
        result[w-1][word[w]] = word[0]

另外,请注意,column_count = file.readline().split('\t')可能是一个问题:首先,从您的问题判断,不清楚第一行是否将容纳每行的最大字数;第二,请注意,在第二个for line in file循环中不会再次读取该行,因此除非这是某种类型的标头行,否则某些is将丢失。更新:是一个标头,列出了所有的列,所以这是完全没有问题的。

最后,您应该负责关闭文件(在方法的末尾添加file.close() ),或者使用 statement,它将为您处理这个问题。在此块的末尾,文件将自动正确关闭。

代码语言:javascript
复制
with open(map_file) as f:
    # your code
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19134432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档