Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。
Q&A
解決済
2回答
2063閲覧
総合スコア35
0グッド
0クリップ
投稿2021/02/26 09:07
0
下記のようなdictを含んだlistがあり、id=2のnameを取得したい場合にforループを使うと思いますがforループ以外で実現する方法などありますでしょうか?
python1[ 2 {'id': 1, 'name': 'tanaka'}, 3 {'id': 2, 'name': 'satou'}, 4 {'id': 3, 'name': 'koga'} 5]
python
1[ 2 {'id': 1, 'name': 'tanaka'}, 3 {'id': 2, 'name': 'satou'}, 4 {'id': 3, 'name': 'koga'} 5]
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答2件
ベストアンサー
何度も利用する必要があり、idがユニークなら、dictにするのがいいと思います。
py1a = [ 2 {'id': 1, 'name': 'tanaka'}, 3 {'id': 2, 'name': 'satou'}, 4 {'id': 3, 'name': 'koga'} 5] 6 7b = {x['id']: x['name'] for x in a} 8 9print(b[2])
py
1a = [ 2 {'id': 1, 'name': 'tanaka'}, 3 {'id': 2, 'name': 'satou'}, 4 {'id': 3, 'name': 'koga'} 5] 6 7b = {x['id']: x['name'] for x in a} 8 9print(b[2])
一度しか使わず、forループ以外となると…包括表記かfilterですかね?
py1print([x['name'] for x in a if x['id'] == 2][0]) 2 3print(list(filter(lambda x:x['id'] == 2, a))[0]['name'])
1print([x['name'] for x in a if x['id'] == 2][0]) 2 3print(list(filter(lambda x:x['id'] == 2, a))[0]['name'])
投稿2021/02/26 09:21
総合スコア1332
回答へのコメント
2021/02/26 09:43
内包表記をfor文でないといえるなら、以下です。
python1>>> ds = [ 2... {'id': 1, 'name': 'tanaka'}, 3... {'id': 2, 'name': 'satou'}, 4... {'id': 3, 'name': 'koga'} 5... ] 6>>> 7>>> print([x['name'] for x in ds if x['id'] == 2][0]) 8satou
1>>> ds = [ 2... {'id': 1, 'name': 'tanaka'}, 3... {'id': 2, 'name': 'satou'}, 4... {'id': 3, 'name': 'koga'} 5... ] 6>>> 7>>> print([x['name'] for x in ds if x['id'] == 2][0]) 8satou
投稿2021/02/26 09:16
総合スコア24672
2021/02/26 09:41
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
Python list内dictの検索方法
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/26 09:43