私はデータの複数のリストのためのいくつかの基本的な統計を作成し、辞書に保存したいと思います:Pythonでいくつかのリストの統計辞書を作成しますか?
>>> from statistics import mean,median
>>> a,b,c=[1,2,3],[4,5,6],[7,8,9]
以下のリスト内包表記が動作し、「A」の統計情報を出力します
割り当て>>> [eval("{}({})".format(op,a)) for op in ['mean','median','min','max']]
[2, 2, 1, 3]
リストの変数名(a)は、別のオブジェクト(DTA)へとリスト内包で「DTA」と評価も動作します:
>>> dta="a"
>>> [eval("{}({})".format(op,eval("dta"))) for op in ['mean','median','min','max']]
[2, 2, 1, 3]
富栄私は辞書理解にすべて一緒にこれを結びつけるしようとすると、tが、それは動作しません:
>>> {k:[eval("{}({})".format(op,eval("k"))) for op in ['mean','median','min','max']] for k in ['a','b','c']}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <dictcomp>
File "<stdin>", line 1, in <listcomp>
File "<string>", line 1, in <module>
NameError: name 'k' is not defined
私の推測なぜ「k」はまだ定義されていないされて、evalが理解する前に処理されていることでしょうか?この仕事を得る方法や、同じ出力を達成する別のルーチンの提案はありますか?
興味深い質問を、しかし、あなたのコードが動作する: '{ 'A':[2.0、2、1、 3]、[c]:[8.0,8,7,9]、 'b':[5.0,5,4,6]} –
なぜevalを使用していますか? –
なぜここで 'eval'を使うのですか? Pythonにはファーストクラスの関数があります:それらを使用してください! '[平均(中央値、最小値、最大値)]の統計情報[例えばstat(a)]。 –