我正在编写一个带参数的函数,除其他外,还要创建一个字典。我希望字典的名称基于输入文件的名称。说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]
答案 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
这是你需要的吗?