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

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

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

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

Python

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

Q&A

解決済

2回答

612閲覧

pythonのリスト内包表記とitems()を使ったキー取得について

paren0609

総合スコア1

Python 3.x

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

Python

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

0グッド

1クリップ

投稿2021/03/22 14:57

python初心者です。
基礎的な内容かもしれませんが、調べても出てこなかったので質問させてください。

値からキーを取得するというプログラムを書こうと調べていた時に、以下の構文を見ました。

python3.x

1dic={"apple":"red","banana":"yellow"} 2a=[b for b, c in dic.items()] 3print(a)

実行するとapple、bananaが出力されるのですが、これがなぜdicからキーだけを出力するのかがよく分かりません。
その仕組みと、リスト内のコンマはどのような意味があるのか、
そしてbとcそれぞれに何が代入されているのか合わせて教えて頂けたらと思います。
回答よろしくお願いします。

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

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

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

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

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

meg_

2021/03/22 15:03

> 値からキーを取得するというプログラムを書こうと調べていた時に、以下の構文を見ました。 引用元には何か説明はなかったのでしょうか?
paren0609

2021/03/22 15:06

それらしい説明はあったのですが理解が及びませんでした……
guest

回答2

0

書いていただいたコードは短縮表記になっていますね。短縮形をなおすとこのようなコードになります。(一例)

python

1dic = {"apple":"red", "banana":"yellow"} 2a = [] 3for b, c in dic.items(): 4 a.append(b) 5 6print(a)

for文はどのような動作をするかはおわかりでしょうか?
たとえば

python

1a = [1, 2, 3] 2for i in a: 3 print(i)

というコードであれば、iの値がループごとに1, 2, 3と代わり出力されますね。

上記のitems関数を使った場合は、1回のループで辞書型のkeyとvalueとを同時に定義することができます。
1回目のループではbに"apple", cに"red"、2回目のループではbに"banana"、cに"yellow"が入ります。
そして、そのbの値をaにappendで入れてきます。

ループを全部回したあと、aを出力すると…["apple", "banana"]になるというわけです。

それを短縮形にしたものが質問者様がかいたコードになります。短縮形は初めて見るとちんぷんかんぷんですよね^^;

投稿2021/03/22 15:07

yoshi_10_11

総合スコア241

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

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

0

ベストアンサー

items()の機能で、bにはキー、cには値がセットされます。
そのうちのbだけでリストを作っています。

投稿2021/03/22 15:01

otn

総合スコア84802

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

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

paren0609

2021/03/22 15:09

回答ありがとうございました。 key for (key,value)ってことですね……コンマ前後で違うものだと思い込んでました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問