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

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

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

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

Q&A

解決済

1回答

800閲覧

Python 3.x list 一つの要素内に複数の情報がある場合

6Hawaiian

総合スコア7

Python 3.x

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

0グッド

0クリップ

投稿2020/06/22 02:29

#実現したいこと
下記のリストより特定の年齢層(30~39歳)の所有する車種を重複なく打ち出したい。
またメーカーを"key"にしてそのメーカーの車を所有する人数を"value"として打ち出したい。

python

1 "イニシャル" "年齢" "メーカー" "車種" "ナンバー" 2 "T.T. 26 HONDA CR-V 76-74", 3 "J.L. 25 MITSUBISHI OUTLANDER 31-92", 4 "O.E. 57 MITSUBISHI DELICA 28-88", 5 "P.C. 22 HONDA CR-V 13-89", 6 "X.L. 32 MITSUOKA HIMIKO 33-64", 7 "Z.Y. 56 TOYOTA C-HR 55-11", 8 "M.F. 48 HONDA VEZEL 63-79", 9 "P.Y. 28 DAIHATSU BOON 58-85", 10 "H.C. 41 NISSAN X-TRAIL 33-52", 11 "W.L. 32 TOYOTA C-HR 44-84", 12 "Z.T. 44 NISSAN GT-R 34-49", 13 "Z.E. 53 NISSAN GT-R 94-31", 14 "G.P. 55 DAIHATSU CAST 27-65", 15 "B.T. 25 DAIHATSU THOR 45-11", 16 "H.K. 59 Matsuda FLAIR 84-17", 17 "E.P. 36 SUZUKI JIMNY 52-81", 18 "S.X. 46 TOYOTA COROLLA 15-39", 19 "O.X. 33 Matsuda CX-8 79-24", 20 "E.T. 47 SUZUKI SOLIO 46-21", 21 "D.N. 27 SUZUKI SOLIO 45-22", 22以降同様のリストが続く

##試したこと
ひとまず特定の年齢を一つに絞りその数字を含む要素を抽出後split関数で新たなリストを作成しスライス

python

1 2f = 21 3new_list = [] 4for age in info: 5 if str(f) in age: 6 if "21" in age: 7 if age[8] == "2" and age[9] == "1": 8 age.split() 9 age2 = (age[28:-8]) 10 new_list.append(age2) 11

同様のコードで範囲を拡大(20~29歳)して最後にset()でプリントしたところset()という文字のみがプリントされ求めている回答が得られない状況になっています。
またkeyとvalueについてはsplitで新たなリストを作成後メーカーの前後でスライスし、その後countもしくはfor文を使って計上、最後にd.items()を使ってプリントするという方法で行こうと思うのですが可能でしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

Python

1from collections import Counter 2 3lst = # あなたのリスト 4lst = [s.split() for s in lst] # splitして2次元配列に 5companies = [l[2] for l in lst if 30 <= int(l[1]) <= 39] # 30~39歳の人の会社のリスト 6counts = Counter(companies) # どの会社の車を何人の人が持っているか 7for k,v in counts.items(): 8 print(f"{k}: {v}人") # 結果 9 10# MITSUOKA: 1人 11# TOYOTA: 1人 12# SUZUKI: 1人 13# Matsuda: 1人 14```[Counter](https://note.nkmk.me/python-collections-counter/)を使う 15*** 165行目が複雑ですが、 17```Python 18companies = [l[2] for l in lst if 30 <= int(l[1]) <= 39] 19# ↓ 20companies = [] 21for l in lst: 22 if 30 <= int(l[1]) <= 39: 23 companies.append(l[2]) 24```と同じこと

投稿2020/06/22 02:38

編集2020/06/22 02:47
ForestSeo

総合スコア2722

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問