2016-12-07 15 views
-2

私は試しましたが、これまでこれを理解することはできません。私はタプルのリストを作成したい 、辞書の値のうち、構築された各1:* argsのタプルを作成

my_list = [(x['field1'], x['field2']) for x in my_dict] 

しかし、問題は、私は*引数に取得したいフィールドを渡し、関数内でこれをしたいということです。

my_func('field1', 'field2') 

* argsリストから最初のリストの理解をどのように構築できますか?

ありがとうございます!

私は明確にしようとするでしょう。これに

my_func('field1', 'field2') 

簡単に言うが、私がやりたいことは、これをマップであるmy_func内部の文になります

tuple(x['field1'], x['field2']) 

(* args)

+1

としてそれを呼び出します。あなたは、あなたが望む入出力を例に挙げることができますか? – Dekel

+0

不明な点...これは辞書のリストで 'my_dict'とは何ですか?あなたは 'my_dict'の各要素から異なるフィールドを取得したいですか? – donkopotamus

+0

正確に何を求めているのですか?関数の引数からタプルを作成する?だからタプルを返す関数が必要ですか? – pagep

答えて

1

あなたはargsの上に別の理解をすることによってtupleを作成することができます。

def my_func(*args): 
    return [tuple(x[arg] for arg in args) for x in my_dict] 

しかしこれはあなたのmy_dictがグローバル変数であることを前提としています。しかし今では、my_func('field1', 'field2')で指定したように呼び出すことができます。

私は、関数定義に辞書を追加することをお勧めします:

def my_func(my_dict, *args): 
    return [tuple(x[arg] for arg in args) for x in my_dict] 

、あなたが何をしたいのか明確ではないので、my_func(my_dict, 'field1', 'field2')

+0

になります。実際は関数はもっと複雑で、辞書。私はそれを簡単にして、質問がより明確になるようにしました。再度、感謝します! – Ivan

0

これらの引数を通常通り参照してください:

def f(d, a, b): 
    return [(x[a], x[b]) for x in d] 

result = f(my_dict, 'field1', 'field2') 
関連する問題