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

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

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

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

3回答

795閲覧

for文におけるfile['name']が何を指すのかわからない

masukin

総合スコア34

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/05/09 07:31

下のプログラムの下から7行目のfor文の意味が分かりません。
for category(変数)in coco_json['categories']:

coco_jsonはファイルを定義しているので、
coco_jsonの中に'categories'の個数が複数あり, それをfor文でループ処理しているということでしょうか。

file['name']のような書き方のときに何を示しているのか、
教えていただきたく思います。

引用先はこちらです。

class CocoLikeDataset(utils.Dataset): """ Generates a COCO-like dataset, i.e. an image dataset annotated in the style of the COCO dataset. See http://cocodataset.org/#home for more information. """ def load_data(self, annotation_json, images_dir): """ Load the coco-like dataset from json Args: annotation_json: The path to the coco annotations json file images_dir: The directory holding the images referred to by the json file """ # Load json from file json_file = open(annotation_json) coco_json = json.load(json_file) json_file.close() # Add the class names using the base method from utils.Dataset source_name = "coco_like" for category in coco_json['categories']: class_id = category['id'] class_name = category['name'] if class_id < 1: print('Error: Class id for "{}" cannot be less than one. (0 is reserved for the background)'.format(class_name)) return self.add_class(source_name, class_id, class_name)

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

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

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

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

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

guest

回答3

0

キーcategoriesの値としてidとnameを持つリストが存在する構造になっています。

Python

1coco_json = {"categories":[{"id":1,"name":"hoge"},{"id":2,"name":"huga"}]} 2 3for category in coco_json['categories']: 4 class_id = category['id'] 5 class_name = category['name'] 6 7 print(class_id, class_name)

投稿2019/05/09 07:37

can110

総合スコア38256

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

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

masukin

2019/05/10 00:59

ご回答有難うございます。助かりました。
guest

0

ベストアンサー

coco_jsonはファイルを定義しているので、

これがまず違います。ループ外で

python

1print(type(coco_json)) 2print(coco_json)

とでもすれば納得行くと思いますが、pythonのdictかlistのはずです。

json.loadはJSONを読み込み、pythonのオブジェクトによる表現に変換して返します。

参考:
https://docs.python.org/ja/3/library/json.html#json.load

今回は辞書なので'categories'というキーに該当する値を取り出している訳です。

投稿2019/05/09 07:37

hayataka2049

総合スコア30933

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

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

masukin

2019/05/10 01:01

ご回答ありがとうございます。 このような使い方があるのを知りませんでした。 有難うございます。
guest

0

coco_jsonは辞書型ですね。
いきなり、こういうの勉強するより、基本文法を勉強したほうがいいですよ

Python

1coco_json={ 2 "categories":[ 3 {"id":"P1","name":"X1"}, 4 {"id":"P2","name":"X2"}, 5 {"id":"P3","name":"X3"}, 6 {"id":"P4","name":"X4"}, 7 ] 8}

投稿2019/05/09 07:35

yamato_user

総合スコア2321

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

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

masukin

2019/05/10 01:01

ご回答ありがとうございます。 基礎を勉強しようかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問