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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1271閲覧

python リストか辞書のどちらが効率的か

22Go

総合スコア55

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/04/21 07:47

python 条件分岐

以前の質問

hogeをリストで管理したいがために

1,前の行の符号と一致している かつ 数字の差が10以下ならリストにappend
2,そうでないならリストをprintし、リセット

というコードを書いたのですが、1行目の処理とリストが空の時に
printしないという条件を加えたいのですがうまくいかないので教えてください。

python

1hoge = [] 2mark = "" 3mini = 0 4 5with open("data", "r") as f: 6 7 for line in f: 8 l = line.strip().split() 9 if l[0] != 'list': 10 continue 11 12 if int(l[2]) - mini < 10 and l[4] == mark: 13 hoge.append(l[1]) 14 15 else: 16 count = len(hoge) 17 print(hope, str(count)) 18 hoge = [] 19 20 mini = int(l[3])#max 21 mark = l[4]#+.- 22 23 print("", str(count)) 24 hoge.append(count) 25

この様なデータの場合リストで管理する方がいいのか、辞書を使って管理するのがいいのか
迷ってます。
アドバイス宜しくお願い致します。

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

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

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

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

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

hayataka2049

2019/04/21 08:40

>1行目の処理とリストが空の時にprintしないという条件を加えたいのですがうまくいかない そのためにどんなコードを書いて、どのようにうまくいかなかったのかを記述してください。
guest

回答2

0

問題は解決されたようで、なによりです。

リストと辞書について、少し書きましたので参考にしてください。
『『前の行の』というようにデータに順序がついていて、「最初から12番目のデータ」というような指定の仕方ができるのがリストです。
それに対して、「"山本さん"のデータ」とか「”2019年4月21日”のデータ」というように、各データに名札がついていて、名札に書かれた名前でデータが指定できるのが辞書(Dictionary)です。

 この質問では『前の行の符号と一致している かつ 数字の差が10以下ならリストにappend』というのを実現したい訳ですから、「前の行」が指定可能なリストを使ってください。

 Python等のDictionayは、国語の辞書のように”あいうえお”順でデータが収められている訳ではありません。「前の行」のような順序付けが無いのです。 だから、この質問のような用途には辞書は使えません。』

投稿2019/04/21 12:54

coco_bauer

総合スコア6915

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

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

22Go

2019/04/21 12:55

ご指摘、ありがとうございます。 リストの方が効率的だと思っていたので、よかったです。
guest

0

自己解決

すみません、初歩的なミスに気づき解決いたいました。
申し訳ありませんでした。

投稿2019/04/21 09:12

22Go

総合スコア55

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問