2012-04-19 7 views
4

未知の幅(列数)の表を入力したいので、各列のリストを出力するようにします。私はまた、上記のリストの名前を含むリストを出力しています。可変数の出力を返すPython関数

は、私はこれをしようとしています:

def crazy_fn(table): 
    titles=read_col_headers(table) 
    for i in range(1,len(table)): 
     for j in range(0,len(titles)): 
      vars()[titles[j]].append(table[i][j]) 

    return titles, vars()[titles[k]] for k in range(0,len(titles)) 

機能は私が出力(タイトル、a、b、c、dを返す)しますどのように多くのカラム/リストを知ったときのために働くが、私はきた道一般化しようとしたが動作していません。

+2

あなたは 'table'がどのように見えるか私たちを見ることができますか? –

+0

どの部分が機能しないようですか?入出力とは何ですか?エラーメッセージは何ですか? –

答えて

5

関数から返される変数の数が一定でないことは、一般的には悪い考えです。なぜなら、それを使用するのは混乱し、エラーを起こしやすいからです。

ディクショナリマッピングのタイトルヘッダーをリストに戻してみませんか?

def crazy_fn(table): 
    result=dict() 
    titles=read_col_headers(table) 
    for title in titles: 
     result[title]=VALUE(TITLE) 
    return result 

これはに辞書内包表記を使用して省略することができます。

def crazy_fn(table): 
    return {title : VALUE(TITLE) for title in read_col_headers(table)} 
+0

私はそれをすべて辞書に詰め込み、辞書を返すことができます。 しかし、私は変更を加えるたびにアンパックする必要があり、私はそのステップを望んでいました。とにかく私がやろうとしていることが可能であれば、さらに興味がありました。 – user1343236

+0

多くの戻り値で行うことができる辞書ではできない変更はありますか? –

+0

辞書は、行く方法です。それは事をもっと簡単にします。 ありがとうございました! – user1343236

5

すごい迫力、あまりにも多くのループ

のようなもの:

def crazy_fn(table): 
    titles = read_col_headers(table) 
    columns = zip(*table[1:]) 
    return titles, columns 

はおそらくそれを行うだろう。 python built in functionsの仕組みについてもっと読む価値があります。

関連する問題