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

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

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

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

1607閲覧

【Python2.7】for 〜 inで取り出せる値を、forを使わずに取り出す

nnahito

総合スコア2004

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2016/09/18 14:51

今まで考えたことがなかったのですが、直面したので……

例えば、何らかのオブジェクトがあったとして、

python

1for i in list: 2 print i

とすれば、値を一つずつ抜き出すことができます。

この「list」というのがもし、list型であれば、
i = list[0]として値を抜き出すことが出来ると思うのですが、

何かよくわからない型であった場合、エラーが出ます。
(beautiful soupでクロールしてきた物だったのでtag型らしいです)

この時、そのオブジェクトの任意の場所を取得したい場合、どのようにすれば良いのでしょうか?


こちらのサイト様を見ていたのですが、

python

1#!/usr/bin/python 2# coding: UTF-8 3 4dic = {'one':1, 'two':2, 'three':3, 'four':4} # 辞書 5 6# if 「検索するキー」 in 「検索される辞書」: 7elem = 'three' 8if elem in dic: # 辞書のキーの検索 9 print '辞書 %s に要素の「キー」 %s は存在する。' % (dics, elem) 10print

dicsお前、どこから出てきたんだよ!!と困惑しております。
in演算子はboolを返すらしいですし……

for hoge in list
は、どのように処理しているのでしょうか。

ご存じの方、詳しい方がいらっしゃいましたら、ご教示願います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Pythonにおけるブランケット([])を使用して値を取得する方法は、主に以下の2通りです。

  • foo[index]: indexは整数で、list型もしくはlist型のように扱えるオブジェクトに対して利用可
  • foo[key]: keyは主に文字列※で、dict型もしくはdict型のように扱えるオブジェクトに対して利用可。
    (※keyはタプルなど宣言後状態を変更できない値なら文字列以外でも指定可)

なので、上記のように条件にあった型を持つ件数ならば何れかの方法で任意に値を取得できるかと思います。


「こちらのサイト様」にあるサンプルのdicsはただ、dicのtypoだと思います。
実際動かしてみると動かないかと。

また、辞書型に対するfor..inは、その辞書にあるキーを1つずつ返し、なくなるまで繰り返します。

Python2.7 日本語マニュアル - 5.6. ループのテクニック
http://docs.python.jp/2.7/tutorial/datastructures.html#looping-techniques

投稿2016/09/19 01:33

編集2016/09/19 01:46
yukkeorg

総合スコア985

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

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

nnahito

2016/09/19 03:39

ご回答ありがとうございます。 >辞書型に対するfor..inは、その辞書にあるキーを1つずつ返し、なくなるまで繰り返します この、「その辞書にあるキーを1つずつ返す」を、forを使わずに、最初の一つ目だけを取り出す、ということを行いたい場合はどのようにすればよいのでしょうか。 やはり、in演算子だけではムリで、.keys()などを使わないといけないのでしょうか?
yukkeorg

2016/09/19 05:26

list型の場合は、foo[0] で最初の値を取得できますが、dict型の場合は最初を表すkeyがなにかを事前に知っている必要があります。同様にn番目の値を取得したい場合、list型はfoo[n-1]、dict型は、n番目に格納したキー(もちろん事前に知っている必要有)を指定します。 またkeys()メソッドで返される最初のキーは、dict型の特性上、そのdict型の変数に格納した最初のキーとは限らないことに注意してください。
nnahito

2016/09/19 09:47

コメントありがとうございます。 >dict型の場合は最初を表すkeyがなにかを事前に知っている必要があります >またkeys()メソッドで返される最初のキーは、dict型の特性上、そのdict型の変数に格納した最初のキーとは限らないことに注意 と言うことは、結局keyがわからない状態では、for...in...を使わないといけないということでしょうか?
yukkeorg

2016/09/19 12:26 編集

> と言うことは、結局keyがわからない状態では、for...in...を使わないといけないということでしょうか? はい。キーが分からなくて目的の値を取得したい場合は、そのdict型変数が持つキーをkeysメソッドで全て取得して、for..inを利用してキーの内容を確認しながら、値を取得するしか無いかと思います。
nnahito

2016/09/19 14:43

ありがとうございます! 勉強になりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問