在函数中定义字典名称

时间:2011-12-30 18:19:44

标签: python

我正在编写一个带参数的函数,除其他外,还要创建一个字典。我希望字典的名称基于输入文件的名称。说ht输入文件是input.xml,我希望字典的名称是input。理想情况下我会使用这样的东西:

def function(input):
    for x in y: list(get value)
    input[:4][key] = [value]

我想知道你是否知道更好的方法,但我现在使用的是功能中的额外名称:

def function(input, dictname):
    for x in y: list(get value)
    dictname[key] = [value]

现在我只是在我的函数中添加第二个名称,但我想知道是否有办法这样做以减少输入。


修改


我正在使用我正在使用的更长版本的函数,所以你们可以获得上下文。这使用BioPython模块迭代命中的XML文件。我正在使用[temp]来保存每个查询的匹配,然后为每组查询/命中设置字典。我希望这个字典的命名与我的输入文件相同。

from Bio.Blast import NCBIXML

def make_blast_dictionary(blastxml, maxhits, blastdict):
    temp=[]
    for record in NCBIXML.parse(open(blastxml):    
        for number, align in enumerate(record.alignments):
            if number == int(maxhits): break
            temp.append(str(align.title).split("|")[1])
    blastdict[str(record.query_id)] = [temp]

3 个答案:

答案 0 :(得分:4)

关于命名变量的事情是你可以随意调用它们。最好将它们命名为您正在使用它们的上下文。

从您的方法中简单地返回字典会更好。

答案 1 :(得分:1)

其他受访者合理地关注为什么你想要这样做,或者你应该这样做。话虽如此, 你可以做到这一点:

import os.path

def function(filename):
    d = {'red': 10, 'blue': 20}
    name, ext = os.path.splitext(filename)
    globals()[name] = d

function('input.xml')
print input

答案 2 :(得分:-1)

def make_name(input):
    return = input.split('.')[0]

def function(input):
    """Note: this function is incomplete and assumes additional parameters are in your original script
    """
    for x in y: list(get value)
        dict_name[key] = [value]
    return dict_name

def make_dict(input): 
    dict_name = make_name(input)
    dict_name = {}
    dict_name = function(input)
    return dict_name 

这是你需要的吗?