質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

858閲覧

python3 リスト ⇒ 辞書

zeitaku_fire

総合スコア26

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/06/28 11:05

python

1hour=[1,1,1,2,2] 2paper=[50,50,90,55,40] 3player_ans = {i:j for i,j in zip(hour,paper)} 4#{1: 90, 2: 40} 5#望む出力{1: 190, 2: 95}

2つのリストを、辞書型にしようと思っています。
その際、値を合計したいのですが、いい方法はありますでしょうか?

リストのインデックスは連動しています。

[1, 1, 1, 2, 2]
↓ ↓ ↓ ↓ ↓
[50,50,90,55,40]

1は50,50,90
2は55,40

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

collections.defaultdictが便利です。

Python

1from collections import defaultdict 2 3hour = [1, 1, 1, 2, 2] 4paper = [50, 50, 90, 55, 40] 5 6player_ans = defaultdict(int) 7for h, p in zip(hour, paper): 8 player_ans[h] += p 9 10for k, v in player_ans.items(): 11 print(f'{k}: {v}')

実行結果 Wandbox

1: 190 2: 95

collections.Counterを用いた別解。

Python

1from collections import Counter 2 3hour = [1, 1, 1, 2, 2] 4paper = [50, 50, 90, 55, 40] 5 6player_ans = Counter( 7 h for h, p in zip(hour, paper) for _ in range(p) 8) 9 10for k, v in player_ans.items(): 11 print(f'{k}: {v}')

Wandbox

投稿2018/06/28 11:14

編集2018/06/28 11:25
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zeitaku_fire

2018/06/28 12:07

LouiS0616さま、いつもありがとうございます。 ・import defaultdict ・player_ans = defaultdict(int) 上記をplayer_ansに定義したことにより、player_ans[h] += pで、計算ができるのだと解釈いたしました。 今後ともよろしくお願いします。
LouiS0616

2018/06/28 12:20 編集

defaultdictを用いることで、次のようなコードを簡潔に表しているのです。 player_ans = {} for h, p in zip(hour, paper):   if h in player_ans:     player_ans[h] += p   else:     player_and[h] = int() # int()は0を返す 註: 成形のため全角スペースを用いています。
guest

0

Python

1import pandas as pd 2 3hour=[1,1,1,2,2] 4paper=[50,50,90,55,40] 5 6df = pd.DataFrame({"hour":hour, "paper":paper}) 7df1 = df.groupby("hour").sum() 8print(df1)

出力結果は少し違いますが、pandasのDataFrameを使ってみました。

投稿2018/06/28 11:45

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zeitaku_fire

2018/06/28 12:10

おいそがしいとこ、ありがとうございます。 pandasというものを使ったことないのですが、これでも計算ができるのですね。 今後ともよろしくお願いします。
退会済みユーザー

退会済みユーザー

2018/06/28 12:14

参考になってよかったです。こちらこそ、よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問