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

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

ただいまの
回答率

90.32%

  • Python

    9223questions

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

  • Python 3.x

    7414questions

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

ループ文で処理した結果のリストを、最後にまとめて返したい。

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,365

learnpython

score 9

閲覧頂きありがとうございます。Python初心者です。

タイトルの通り、ループ文の処理結果の複数のリストをまとめてリターンしたいのですが
上手くいかず、、ご指摘アドバイス等頂けると幸いです。

for n in range (0,3) :

 # 結果格納用変数
 listNumber = "result" + str(n)
 # ループ毎に処理結果を追加していき、最後にリターンする用の変数
 resultListNumber.append(listNumber)
 
 if(n == 0) :
  listNumber = {no:0, food:apple}
  continue
 if(n == 1) :
  listNumber = {no:1, food:orange}
  continue
 if(n == 2) :
  listNumber = {no:2, food:grape}
  continue

 return resultListNumber

例として書いたものにも誤りがあるかもしれませんが、実施したいこととしましては
繰り返し処理の中で各々の結果を持ち、それを最後にまとめてリターンしたいということです。
ここでいうとリターン結果を

[{no:0, food:apple},{no:1, food:orange},{no:2, food:grape}]

のようにしたいです。

初歩的な質問かもしれませんが、何卒宜しくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+1

こんな感じでしょうか。

ret_list = []
for n in range(3) :
    if(n == 0) :
        tmp_dict = {'no':0, 'food':'apple'}
    elif(n == 1) :
        tmp_dict = {'no':1, 'food':'orange'}
    elif(n == 2) :
        tmp_dict = {'no':2, 'food':'grape'}

    ret_list.append(tmp_dict)

return ret_list

ループごとに処理が決まっているなら、最初からループを使う意味がない気もします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/12 10:49

    出来ました!
    今つまづいていたのがループ文の書き方っていうところだったので、
    簡略化して書きかましたが、実装したい内容はループごとにかなり複雑なので使わざるを得ないのです。。
    ご回答ありがとうございました。

    キャンセル

+1

  • 辞書のキーと値を文字列とするなら'no'のように'または"で囲む必要があります。
  • 結果表示において、辞書の要素の並び順は保証されないので{'food': 'apple', 'no': 0}のようになります。
  • 提示された結果例には含まれていませんが、"result" + str(n)のような文字も含めたい場合は辞書をネストするとよいでしょう。(回答コードのコメントアウト部分)
def makeList():
    ret = []
    for n in range(3):
        if n == 0:
            one = {'no':0, 'food':'apple'}
        elif n == 1:
            one = {'no':1, 'food':'orange'}
        else:
            one = {'no':2, 'food':'grape'}

        ret.append(one)
        #ret.append({"result" + str(n):one})

    return ret

print(makeList())
# [{'food': 'apple', 'no': 0}, {'food': 'orange', 'no': 1}, {'food': 'grape', 'no': 2}]
# [{'result0': {'no': 0, 'food': 'apple'}}, {'result1': {'no': 1, 'food': 'orange'}}, {'result2': {'no': 2, 'food': 'grape'}}]

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/12 10:52

    ご回答ありがとうございます!確かに''抜けてました。。
    今回は使用しない予定ですが、
    リスト名をオブジェクトに追加するやり方もご教示頂きありがとうございます。

    キャンセル

checkベストアンサー

0

ぱっとソースコードを見ての感想ですが、Returnのネストが一つ深くないでしょうか?

また、もし最後に結果を表示したい場合は、一度forループの外で、結果返答用の変数を宣言しておくのがいいと思います。

ということで以下のようになりますでしょうか?

resultListNumber = []

for n in range (0,3) :
 # 結果格納用変数
 listNumber = "result" + str(n)
 # ループ毎に処理結果を追加していき、最後にリターンする用の変数
 resultListNumber.append(listNumber)

 if(n == 0) :
  listNumber = {no:0, food:apple}
  continue
 if(n == 1) :
  listNumber = {no:1, food:orange}
  continue
 if(n == 2) :
  listNumber = {no:2, food:grape}
  continue

return resultListNumber

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/12 10:48

    出来ました!
    見返して気付いたのですが appendは最初にやってしまうとただの文字列が連結されてしまいますね。
    continueの後にそれぞれ入れたら上手くいきました。
    ご回答ありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python

    9223questions

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

  • Python 3.x

    7414questions

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