2011-12-30 3 views
0

パラメータをとり、辞書を作成する関数を書いています。辞書の名前は入力ファイルの名前に基づいています。 htの入力ファイルがinput.xmlであるとすれば、私は辞書の名前をinputにしたいと思います。今関数内で辞書名を定義する

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

:あなたがこれを行うには良い方法を知っているが、私は今使っていることは関数内の余分な名前である場合、私は疑問に思って

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

:理想的には私はこのようなものを使用します私は単に関数に第2の名前を追加するだけですが、入力を少なくするためにこれを行う方法があるのだろうかと思っています。私は、私はあなたたちは、コンテキストを取得することができます使用しています機能の長いバージョンを含む午前


編集


。 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] 
+1

正直なところ、それは私には意味の多くを作成しません。なぜあなたの関数から辞書を返さないのですか? – Xion

+0

辞書の名前は何ですか?あなたは変数の名前を意味しますか?もしそうなら、あなたは何をしようとしていますか? –

+1

あなたの質問をより明確に書き直してください。 –

答えて

4

名前付き変数については、好きなように呼び出すことができます。それらを使用しているコンテキストに固有の名前を付けるのが最善です。

代わりにあなたの方法の辞書をreturnにするのが良いでしょう。

-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 

これは必要なのですか?

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 
+0

また、ファイル名が数字で始まらないようにする必要があります。 – Rotem

+0

@Rotem上記のコードは、数字で始まる名前でも動作します。動的に作成された名前も動的に検索される傾向があります(名前を事前に知っていれば、直接割り当てることができます)。 –

+0

これはすばらしいことですが、そうでなければ無効な名前を動的に割り当てることができないことを知りました。 – Rotem

関連する問題