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

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

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

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

Q&A

解決済

2回答

464閲覧

pythonで重複したものの計算

maemaekin123

総合スコア1

Python 3.x

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

0グッド

0クリップ

投稿2022/08/14 13:52

前提

はじめまして。
python初学者です。
list =[["東京都",1],["東京都",2],["大阪府",2],...]というリストがあったとき、for文でループをかませて、もし"東京都"="東京都"なら足し算する(1+2)、でないなら、足し算しないという構文はどう書いたらいいですか?
csvファイルに、
東京都,1
東京都,2
大阪府,2
神奈川,4
大阪府,0
...
があり、県単位で数値を合計して、グラフを書きたいです。
ファイルの読み書きや、グラフmatplotlibは使えるのですが、この集計の部分の構文が思いつきません。for文と書きましたが、そうでなくても大丈夫です。
宜しくお願い致します

ここに質問の内容を詳しく書いてください。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • ▲▲機能を動作するようにする

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

meg_

2022/08/14 13:59 編集

> list =[["東京都",1],["東京都",2],["大阪府",2],...]というリストがあったとき、for文でループをかませて、もし"東京都"="東京都"なら足し算する(1+2 上記リストはCSVファイルを読み込んで作成したものですか?そこまではコード作成できているという前提で良いですか? ※変数名にlistは使わない方が良いかと思います。
maemaekin123

2022/08/14 14:04

こんばんは。早速ありがとうございます。 はい、そうです。 CSVファイルからwith open() as f:のやつで取り込んで、いろいろいじって、上記の入れ子のリストを作りました。
guest

回答2

0

meg_さんの回答をちょっといじったものです。

Python

1src = [['東京都', 1], ['東京都', 2], ['大阪府', 2]] 2dst = {} 3for k, v in src: 4 dst[k] = dst.get(k, 0) + v 5 6print(dst)

これだけでは寂しいので別解も。


もし元々のリストが既に都道府県順に並んでいるのであれば、次の方法でも良いでしょう。

Python

1import itertools 2import operator 3 4src = [['東京都', 1], ['東京都', 2], ['大阪府', 2]] 5dst = { 6 k: sum(v for _, v in it) 7 for k, it in itertools.groupby(src, key=operator.itemgetter(0)) 8} 9 10print(dst)

今回の場合ちょっと大袈裟に見えますが、
さまざまな方法を知っていると類似の問題に対し何かと活用し易いかと思います。

投稿2022/08/15 11:09

LouiS0616

総合スコア35660

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

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

maemaekin123

2022/08/15 11:49

コメントありがとうございます! 一つ目のgetというのは、初めてみました。 また、2つめは、全く見たことのないものです。それぞれの部分がどんな役割を果たしているのか、調べてみます。いつも一つ一つを噛み砕いて理解するようにしています。 megさんのも、すぐには理解できなかったのですが、辞書[キー]=値の形にして、空の辞書にどんどん入れていることがわかりました。 ありがとうございます!
guest

0

ベストアンサー

辞書を使った例です。

Python

1a =[["東京都",1],["東京都",2],["大阪府",2]] 2d = {} 3for i in a: 4 if not i[0] in d: 5 d[i[0]] = i[1] 6 else: 7 d[i[0]] = d[i[0]] + i[1] 8print(d) 9# {'東京都': 3, '大阪府': 2}

投稿2022/08/14 14:33

meg_

総合スコア10580

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

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

maemaekin123

2022/08/14 14:54

回答ありがとうございます。 辞書使ってこのように集計するやり方は、よくあるのでしょうか?
meg_

2022/08/14 15:29 編集

データ量が多い場合はPandas使うと効率的(速い)だと思います。(csv読み込みからPandas使う)
maemaekin123

2022/08/14 15:56

megさん、ありがとう〜 とてもためになりました😇 おやすみなさい〜😇
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問