2017-02-20 8 views
3

私はPythonとプログラミングには非常に新しく、問題を理解するのに苦労しています。どんな助けでも大歓迎です。Python:値を分割してカテゴリ別に平均値を求める方法

私は値とカテゴリの両端キューを持っている:

deque([(3000.0, category1), (6000.0, category1), (8000.0, category2), (3000.0, category3), (7000.0, category3), (4500.0, category3)]) 

私はカテゴリ別にそれぞれの値の平均を印刷する辞書を使用しようとしています。たとえば、category1 =(3000 + 6000)/ 2です。 category2 = 8000/1; category3 =(3000 + 7000 + 4500)/ 3

これを行う簡単な方法はありますか?私の唯一の考えは独特のカテゴリのリストを作成することでこれまでのところ、:

catetory_list = [] 
for i in deque: 
    if i[1] not in category_list: 
    category_list.append(i[1]) 

私はここで重要な何かが欠けていますと思いますが、次のステップを見つけるように見えることはできません。

すでに類似の問題、つまりherehereが見つかりましたが、私はこの問題を私の質問に適合させるために苦労しています。

+0

ようこそ流血!最初に[ツアー(http://stackoverflow.com/tour)に参加して[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)を学んで[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例を参照してください。そうすれば、私たちがあなたを助けやすくなります。 –

+0

@StephenRauch [OK]を、私の質問は非常に明確ではないように聞こえます。私は本当に試していた。 :(私は分かりやすくするために自分の投稿を編集しようとします。 – Nat

+1

参照:http://stackoverflow.com/q/42309909/7484636 – KernelPanic

答えて

3

あなたは近くにいたので、値を使ってdictを構築する必要があると思います。そして、その後値を平均:

サンプルデータ:

my_dq = deque([ 
    (3000.0, 'category1'), (6000.0, 'category1'), (8000.0, 'category2'), 
    (3000.0, 'category3'), (7000.0, 'category3'), (4500.0, 'category3')]) 

コード:

categories = {} 
for i in my_dq: 
    categories.setdefault(i[1], []).append(i[0]) 
categories = {k: sum(v)/len(v) for k, v in categories.items()} 

結果:スタックOへ

{'category1': 4500.0, 'category3': 4833.3333, 'category2': 8000.0} 
+0

...あなたが行くように値を合計する明らかな最適化と、 (それは価値があるかもしれません) – csl

+0

@csl、それは、リストの予想される長さによって決まります... –

関連する問題