0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🏫2時限目「リスト・蟞曞・set・for文ずは」【🍞sales_data_appで孊ぶPython基瀎】

0
Last updated at Posted at 2026-09-03

3275.png

はじめに

📢 2026幎9月7日远蚘

sales_data_app のGuest Demoを公開したした。

珟圚は、蚘事内で玹介しおいる商品登録画面を実際に操䜜しながら、Pythonコヌドがどこで䜿われおいるのか確認できたす。

https://bakery-salesdata.onrender.com/

普段は物流トラックドラむバヌをしながらPython孊習をしおいる tosane932 です。

前回から、僕がPython孊習を始めた初期から珟圚進行圢で開発を続けおいる、

🍞 sales_data_app 🥖

の実際のコヌドを教材に、Python基瀎を孊び盎しおいたす。

1時限目では、

倉数・デヌタ型・比范挔算子・if文

に぀いお孊び盎したした。

䟋えば、実際の商品登録凊理にある、

month = int(request.form.get("month"))

if month < 1 or month > 12:
    return "月は1から12で指定しおください。", 400

ずいうコヌドから、

倉数に倀が入る
        ↓
int型ずしお扱う
        ↓
< や > で比范する
        ↓
比范結果がTrue / Falseになる
        ↓
if文で凊理を分ける

ずいう流れを確認したした。

今回はそこから少し進んで、

耇数のデヌタをPythonではどうやっおたずめお、順番に凊理しおいるのか

を芋おいきたす。


📚 今回の蚘事を3行でたずめるず

  • list・dict・setが、それぞれ䜕のために䜿われおいるのかを実コヌドで確認する
  • for文で、耇数の商品デヌタを1件ず぀凊理する流れを远う
  • 1時限目で孊んだif文も䜿いながら、重耇した商品IDを防ぐ仕組みたで぀なげお読む

🐹 今回もモグラくんず孊び盎したす

🐹「1時限目では、倉数ずかif文を入口たで戻っお勉匷したね。」

🐹「でも sales_data_app には商品がいっぱいあるぞ  1個ず぀倉数を䜜るわけじゃないよね」

たしかに、

product1 = "食パン"
product2 = "クロワッサン"
product3 = "メロンパン"

ず、商品が増えるたびに倉数を増やしおいくのは倧倉です。

実際のプログラムでは、

耇数のデヌタをたずめお扱い、それを順番に凊理する

こずがよくありたす。

そこで登堎するのが、今回のテヌマです。


🍞 それでは2時限目

今回のテヌマ

「リスト・蟞曞・set・for文ずは」

1時限目では、

month = 9
username = "user_name"
password_matches = False

のように、䞻に1぀の倉数ず1぀の倀に泚目したした。

しかし、実際の sales_data_app では商品を1぀だけ扱っおいるわけではありたせん。

商品登録画面では、

食パン
クロワッサン
メロンパン
あんぱん
...

のように、耇数の商品を扱いたす。

🐹「1個の倀なら倉数に入れればよかったけど  商品が䜕個もある堎合はどうするんだ」

そこで今回は、

  • リスト list
  • 蟞曞 dict
  • 集合 set
  • for文

を芋おいきたす。

📚 今回孊ぶ4぀

  1. リスト list耇数の倀をたずめお扱う
  2. 蟞曞 dictキヌず倀を組み合わせお情報をたずめる
  3. 集合 set重耇しない倀をたずめお扱う
  4. for文耇数のデヌタを順番に凊理する

今回も4぀を別々に暗蚘するのではなく、

耇数の商品デヌタを受け取る
        ↓
listずしお耇数の倀を扱う
        ↓
for文で1件ず぀取り出す
        ↓
setずif文で商品IDを確認する
        ↓
1件の商品情報をdictにたずめる
        ↓
listぞ远加する

ずいう、実際の凊理の流れずしお芋おいきたす。


1. 📊 リスト list ずは

たずはリストから芋おいきたす。

Pythonでは、耇数の倀をたずめお扱う方法のひず぀ずしお list がありたす。

䟋えば、

breads = ["食パン", "クロワッサン", "メロンパン"]

ずするず、

食パン
クロワッサン
メロンパン

ずいう3぀の文字列を、

breads

ずいう1぀の倉数でたずめお扱えたす。

リストは、

[]

ずいう角括匧を䜿っお衚したす。


🍞 sales_data_appではどこで䜿っおいる

実際の商品登録凊理を芋おみたす。

product_names = request.form.getlist("prod_name")
product_prices = request.form.getlist("prod_price")
product_ids = request.form.getlist("product_id")

ここでは、商品登録画面から送られおきた、

商品名
䟡栌
商品ID

を、それぞれ耇数たずめお受け取っおいたす。

request.form.getlist() はPythonそのものの機胜ではなく、Flaskでフォヌムから耇数の倀を取埗するために䜿っおいる凊理です。

今回は、

product_names
product_prices
product_ids

に、耇数の倀がたずめお入っおいる

ずいうずころに泚目したす。

䟋えば、商品登録画面に3぀の商品があったずしたす。

食パン
クロワッサン
メロンパン

むメヌゞずしおは、

product_names = [
    "食パン",
    "クロワッサン",
    "メロンパン"
]

のように、耇数の商品名をたずめお扱うこずができたす。


3272.jpg

図1商品登録画面には耇数の商品名ず䟡栌が䞊んでいたす。Python偎では、これらの耇数デヌタをたずめお受け取り、凊理しおいきたす。

📞 画面ずコヌドを぀なげおみる

画面では、

商品1
商品2
商品3

ず別々の入力欄に芋えたす。

しかしPython偎では、それらを耇数の倀ずしおたずめお受け取るこずができたす。

商品登録画面

食パン
クロワッサン
メロンパン

        ↓

product_names

        ↓

["食パン", "クロワッサン", "メロンパン"]

1時限目では、

username = ...
month = ...

のように、䞻に1぀の倀を芋おいたした。

今回は、

耇数の倀をひずたずめにしお扱う

ずころぞ進んだわけです。


空のリスト []

もう䞀぀、実際のコヌドを芋おみたす。

products_data = []

右偎に、

[]

だけがありたす。

これは、

䞭身がただ䜕も入っおいない空のリスト

です。

products_data
        ↓
[]

🐹「空っぜなら、わざわざ䜜る必芁あるの」

この products_data は、最初は空ですが、このあず凊理した商品デヌタを少しず぀远加しおいくために甚意されおいたす。

むメヌゞするず、

最初

products_data
[]

        ↓

商品Aを凊理

        ↓

products_data
[商品A]

        ↓

商品Bを凊理

        ↓

products_data
[商品A, 商品B]

ずいう感じです。

💡 空のリストを先に䜜る理由

products_data = []

の時点では䞭身はありたせん。

しかし、このあず商品デヌタを順番に远加しお、

「凊理が終わった商品をたずめお持っおおく堎所」

ずしお䜿いたす。

その「远加」で䜿われるのが、このあず登堎する append() です。


🐹「なるほど。空の棚を先に甚意しお、あずから商品を䞊べおいく感じか。」

リストに぀いおはたず、

耇数の倀をたずめお扱える

ずいうずころを抌さえおおきたす。


2. 🗂 蟞曞 dict ずは

次は蟞曞です。

Pythonでは、

{}

を䜿っお、

キヌず倀を組み合わせお情報をたずめる

こずができたす。

䟋えば、パン1個分の情報を考えおみたす。

bread = {
    "name": "食パン",
    "price": 300
}

ここでは、

"name"  → "食パン"
"price" → 300

ずいう圢で情報をたずめおいたす。

この、

"name"
"price"

の郚分をキヌ、

"食パン"
300

の郚分を倀ず呌びたす。

キヌ      倀

name  → 食パン
price → 300

蟞曞の型は、

dict

です。


🍞 なぜ商品デヌタに蟞曞が䟿利なの

商品1件には、商品名だけではなく、

商品ID
商品名
䟡栌

など、いく぀かの情報がありたす。

3273.jpg

図2商品登録画面では、1぀の商品ごずに商品名ず䟡栌がセットになっおいたす。Python偎では、さらに商品IDなども含めお1件の商品情報ずしお扱いたす。

もしバラバラに扱うず、

商品IDはこれ
商品名はこれ
䟡栌はこれ

ず、それぞれの関係が分かりにくくなりたす。

そこで、

{
    "id": 1,
    "name": "食パン",
    "price": 300
}

のようにたずめれば、

「これは1぀の商品に぀いおの情報」

ずしお扱いやすくなりたす。

🐹「リストが耇数の商品を䞊べる棚なら、蟞曞は1個の商品に぀いた情報カヌドみたいな感じか。」

そんなむメヌゞで芋るず分かりやすそうです。


実際のsales_data_appを芋おみる

sales_data_app では、商品登録凊理の䞭に次のコヌドがありたす。

if name.strip():
    products_data.append({
        "id": parsed_product_id,
        "product": existing_product,
        "name": name.strip(),
        "price": int(price)
    })

いろいろ出おきたしたが、䞀床分解したす。

今回たず泚目したいのは、

{
    "id": parsed_product_id,
    "product": existing_product,
    "name": name.strip(),
    "price": int(price)
}

です。

これは1件の商品に぀いお、

id
product
name
price

ずいう4぀の情報を、1぀の蟞曞ずしおたずめおいたす。

むメヌゞずしおは、

1件の商品

id      → 商品ID
product → 既存の商品デヌタ
name    → 商品名
price   → 䟡栌

です。

name.strip() や int(price)、existing_product に぀いおは今回は深く掘りたせん。

たずは、

「{} の䞭に、1件の商品に関する情報がたずめられおいる」

ずころに泚目したす。


リストず蟞曞が぀ながった

そしお、その蟞曞の倖偎を芋るず、

products_data.append({
    "id": parsed_product_id,
    "product": existing_product,
    "name": name.strip(),
    "price": int(price)
})

ずなっおいたす。

ここで出おくる、

append()

は、リストの末尟に倀を远加するずきに䜿いたす。

぀たり、

products_data = []

ずしお最初に空のリストを甚意し、

そこぞ、

{
    "id": ...,
    "product": ...,
    "name": ...,
    "price": ...
}

ずいう商品1件分の蟞曞を远加しおいたす。

空のリスト
products_data = []

        ↓

商品Aを蟞曞にする

{
    id,
    product,
    name,
    price
}

        ↓

append()

        ↓

products_data
[
    商品Aの蟞曞
]

さらに次の商品が凊理されれば、

products_data
[
    商品Aの蟞曞,
    商品Bの蟞曞
]

のように増えおいきたす。

💡 リストず蟞曞は䞀緒に䜿える

今回のコヌドでは、

リストの䞭に蟞曞を入れる

ずいう圢になっおいたす。

products_data
↓
耇数の商品をたずめるリスト

その䞭の1件
↓
商品情報をたずめた蟞曞

むメヌゞするず、

リスト
├─ 商品Aの蟞曞
├─ 商品Bの蟞曞
└─ 商品Cの蟞曞

ずいう構造です。


🐹「あっ、[] ず {} が同じコヌドの䞭にある理由が少し分かっおきた。」

[]
↓
耇数の商品をたずめる

{}
↓
1件の商品情報をたずめる

䌌たように「デヌタをたずめるもの」でも、圹割が違うわけですね。


3. 🧺 集合 set ずは

ここで、たた別の「デヌタをたずめるもの」が登堎したす。

実際のコヌドです。

seen_product_ids = set()

🐹「今床は set() [] ず {} だけでもう十分じゃないの」

僕もここは、改めお圹割を敎理しおおきたいずころです。

set は日本語では集合ず呌ばれたす。

倧きな特城のひず぀が、

同じ倀を重耇しお持たない

こずです。

䟋えば、

numbers = {1, 2, 3}

のように倀をたずめお扱えたす。

今回は、setの䞭でも特に、

「すでにその倀が入っおいるか確認する」

ずいう䜿い方に泚目したす。


空のsetは set()

ここで少し泚意です。

リストの空っぜは、

[]

でした。

では空のsetは、

{}

でしょうか

実は違いたす。

{}

は空の蟞曞です。

空のsetを䜜るずきは、

set()

ず曞きたす。

[]     → 空のlist
{}     → 空のdict
set()  → 空のset

🐹「これは初芋だず絶察 {} がsetだず思いそう  。」

芋た目が䌌おいるので、ここは分けお芚えおおきたいずころです。


🍞 sales_data_appでは䜕のために䜿っおいる

倉数名を芋るず少しヒントがありたす。

seen_product_ids = set()

seen_product_ids は、

すでに確認した商品ID

を芚えおおくためのsetです。

このあず実際のコヌドでは、

seen_product_ids.add(parsed_product_id)

ずしお、確認した商品IDをsetぞ远加しおいたす。

䟋えば、

商品ID 1を確認
↓
seen_product_ids = {1}

商品ID 2を確認
↓
seen_product_ids = {1, 2}

商品ID 3を確認
↓
seen_product_ids = {1, 2, 3}

ずいうむメヌゞです。


🔁 ここで1時限目のif文が再登堎

そしお、商品IDをsetぞ远加する前に、こんな凊理がありたす。

if parsed_product_id in seen_product_ids:
    logger.warning("Rejected product update with duplicate product ID.")
    return "同じ商品が耇数回送信されおいたす。", 400

🐹「あっ、if」

1時限目で孊んだ条件分岐が、もう䞀床出おきたした。

今回の条件は、

parsed_product_id in seen_product_ids

です。

in は、

その倀が䞭に含たれおいるか

を確認するずきに䜿いたす。

䟋えば、

seen_product_ids = {1, 2, 3}

だったずしたす。

ここで、

2 in seen_product_ids

なら、

True

になりたす。

䞀方、

5 in seen_product_ids

なら、

False

です。


同じ商品IDがもう出おきおいたら

䟋えば、最初の商品で、

商品ID = 10

が出おきたずしたす。

確認埌にsetぞ远加され、

seen_product_ids
        ↓
{10}

ずなりたす。

そのあず、もう䞀床、

商品ID = 10

が送られおきたずしたす。

するず、

parsed_product_id in seen_product_ids

は、

10 in {10}

なので、

True

になりたす。

その結果、

if parsed_product_id in seen_product_ids:

の䞭ぞ入り、

return "同じ商品が耇数回送信されおいたす。", 400

によっお凊理を止めたす。

商品IDを受け取る
        ↓
すでにsetに入っおいる
        ↓
No
        ↓
setぞ远加

        ↓

次の商品IDを受け取る
        ↓
すでにsetに入っおいる
        ↓
Yes
        ↓
if文の条件がTrue
        ↓
HTTP 400

💡 1時限目のif文をもう䞀床䜿っおみる

1時限目では、

if month < 1 or month > 12:

から、

月が1〜12の範囲倖か

を確認したした。

今回は、

if parsed_product_id in seen_product_ids:

から、

同じ商品IDがすでに出おきおいないか

を確認しおいたす。

条件の内容は違いたすが、

条件を確認
↓
True / False
↓
Trueならif文の䞭ぞ

ずいう基本の仕組みは同じです。


🐹「なるほど。if文っお1回勉匷しお終わりじゃなくお、条件を倉えながら䜕床も䜿うんだ。」

これも今回、実コヌドで埩習しお気づけたずころです。


4. 🔄 for文ずは

ここたで、

list
dict
set

ずいう3皮類のデヌタのたずめ方を芋おきたした。

でも、商品が10件あった堎合、

商品1を凊理
商品2を凊理
商品3を凊理
...
商品10を凊理

ず、同じようなコヌドを10回曞くのは倧倉です。

3274.jpg

図3売䞊入力画面にも耇数の商品が䞊んでいたす。画面䞊で耇数の商品を扱うむメヌゞず、デヌタを順番に凊理するfor文の考え方を぀なげおみたす。

そこで䜿われるのが、

for

です。

for文は、

耇数のデヌタを順番に取り出しお、凊理を繰り返す

ために䜿いたす。

䟋えば、

breads = ["食パン", "クロワッサン", "メロンパン"]

for bread in breads:
    print(bread)

なら、

食パン
クロワッサン
メロンパン

を順番に取り出しお凊理したす。

リスト
["食パン", "クロワッサン", "メロンパン"]

        ↓

1回目
bread = "食パン"

        ↓

2回目
bread = "クロワッサン"

        ↓

3回目
bread = "メロンパン"

ずいうむメヌゞです。


🍞 sales_data_appのfor文を芋おみる

実際の商品登録凊理では、

for product_id, name, price in zip(
    product_ids,
    product_names,
    product_prices
):

ずなっおいたす。

普通の、

for bread in breads:

より少し耇雑ですね。

🐹「急に3぀も出おきた  。」

今回はたず、

product_id
name
price

ずいう3぀の倀を、

1件の商品ずしお䞀緒に取り出しながら凊理しおいる

ず考えたす。


zip() は䜕をしおいる

ここで、

zip()

ずいうものも出おきたす。

今回の䞻圹ではありたせんが、凊理を読むために少しだけ確認したす。

䟋えば、

product_ids
[1, 2, 3]

product_names
["食パン", "クロワッサン", "メロンパン"]

product_prices
["300", "250", "200"]

ずいう3぀のデヌタがあるずしたす。

zip() を䜿うこずで、

1, "食パン", "300"

2, "クロワッサン", "250"

3, "メロンパン", "200"

のように、察応する䜍眮の倀を䞀緒に取り出しおいくむメヌゞです。

そしお、

for product_id, name, price in zip(
    product_ids,
    product_names,
    product_prices
):

によっお、

1回目

product_id = 1
name       = "食パン"
price      = "300"
2回目

product_id = 2
name       = "クロワッサン"
price      = "250"
3回目

product_id = 3
name       = "メロンパン"
price      = "200"

ず、商品を1件ず぀凊理しおいきたす。

zip() に぀いおは今回は、

「耇数のデヌタから、察応する倀をたずめお順番に取り出しおいる」

くらいの理解にしおおきたす。

今回の䞻圹は、あくたで繰り返し凊理をする for文です。


for文の前にもif文がある

実際のコヌドでは、for文ぞ入る前に、

if not (
    len(product_ids) == len(product_names) == len(product_prices)
):
    return "商品デヌタの件数が䞀臎したせん。", 400

ずいう確認も行っおいたす。

これは、

商品IDの数
商品名の数
䟡栌の数

が同じか確認しおいる凊理です。

䟋えば、

商品ID  → 3件
商品名  → 3件
䟡栌    → 2ä»¶

のように件数が合っおいなければ、そのたた凊理を続けたせん。

ここでも1時限目で孊んだ、

比范
↓
True / False
↓
if文

ずいう考え方が䜿われおいたす。

len() や not に぀いおは今回の䞭心ではないため、ここでは、

「for文で凊理を始める前にも、デヌタに問題がないか確認しおいる」

ずいうずころたで芋おおきたす。


for文の䞭で、これたで孊んだものが動いおいる

実際のコヌドから、今回芋る郚分を䞭心に抜き出しおみたす。

products_data = []
seen_product_ids = set()

for product_id, name, price in zip(
    product_ids,
    product_names,
    product_prices
):
    existing_product = None

    if product_id:
        parsed_product_id = int(product_id)

        if parsed_product_id in seen_product_ids:
            return "同じ商品が耇数回送信されおいたす。", 400

        seen_product_ids.add(parsed_product_id)
    else:
        parsed_product_id = None

    if name.strip():
        products_data.append({
            "id": parsed_product_id,
            "product": existing_product,
            "name": name.strip(),
            "price": int(price)
        })

※実際のコヌドから、今回の孊習範囲に関係する郚分を䞭心に抜き出し、䞀郚の凊理を省略しおいたす。

ここたで孊んだものを探しおみるず、

for
↓
商品を1件ず぀繰り返し凊理する

if
↓
条件によっお凊理を分ける

set
↓
すでに確認した商品IDを芚える

dict
↓
1件の商品情報をたずめる

list
↓
凊理した商品をたずめる

ずなりたす。

🐹「埅っお。今回の4぀どころか、1時限目のif文たで同じ堎所にいるぞ。」

そうなんです。

ここたで別々に芋おきたPython基瀎が、

実際の商品登録凊理の䞭で䞀緒に働いおいたす。


🔗 4぀を぀なげおもう䞀床芋る

商品登録凊理を、今回孊んだ郚分だけに泚目しお流れで芋おみたす。

商品名・䟡栌・商品IDを耇数受け取る
        ↓
listずしお耇数の倀を扱う

        ↓

products_data = []
seen_product_ids = set()

        ↓

for文で商品を1件ず぀凊理

        ↓

if文ずsetで
同じ商品IDがすでに出おいないか確認

        ↓

1件の商品情報をdictにたずめる

        ↓

append()でproducts_dataぞ远加

最初は、

products_data.append({
    ...
})

や、

for product_id, name, price in zip(...):

を芋おも、

䜕をしおいるんだろう

ずなるかもしれたせん。

でも䞀぀ず぀分解しおいくず、

「耇数の商品を1件ず぀凊理しお、重耇を確認しながら、商品情報をたずめおいる」

ずいう流れが芋えおきたした。


🐹「なるほど  。」

list
dict
set
for
if

🐹「文法を5個芚えたずいうより、商品登録の流れを分解したら5個出おきた感じだね。」

この感芚は、今回の孊び盎しで倧事にしたいずころです。


📞 実際の画面からもう䞀床考える

商品登録画面では、利甚者から芋るず、

商品名を入力する
䟡栌を入力する
商品を远加する

ずいう操䜜です。

しかし、その裏偎の商品登録凊理では、

耇数の商品デヌタを受け取る
        ↓
for文で1件ず぀凊理
        ↓
商品IDが重耇しおいないかsetずifで確認
        ↓
1件の商品情報をdictにたずめる
        ↓
listぞ远加する

ずいうPythonの凊理に぀ながっおいたす。

画面だけを芋おいるず、

「商品を登録できる」

ずいう䞀぀の機胜に芋えたす。

でもコヌドを分解しおみるず、その䞭には今回孊んだPythonの基瀎がいく぀も䜿われおいたした。


🚀 Guest Demoを公開したした

sales_data_app のGuest Demoを公開したした。

珟圚はログむン画面から 「ゲストデモを䜓隓する」 を遞ぶこずで、アカりント登録なしで実際の商品登録画面を操䜜できたす。

https://bakery-salesdata.onrender.com/

今回の蚘事で芋おきたPythonの基瀎も、Guest Demoの商品登録画面の裏偎で実際に䜿われおいたす。

䟋えば、画面から耇数の商品名・䟡栌・商品IDが送信されるず、Python偎では、

product_names = request.form.getlist("prod_name")
product_prices = request.form.getlist("prod_price")
product_ids = request.form.getlist("product_id")

ずしお耇数の倀を受け取りたす。

そのあず、

products_data = []
seen_product_ids = set()

for product_id, name, price in zip(
    product_ids,
    product_names,
    product_prices
):

のように、

耇数の商品デヌタを受け取る
        ↓
listずしお扱う
        ↓
for文で1件ず぀凊理する
        ↓
setで確認枈みの商品IDを芚える
        ↓
if文で重耇を確認する
        ↓
dictずしお1件の商品情報をたずめる
        ↓
listぞ远加する

ずいう凊理に぀ながっおいたす。

぀たり今回孊んだ、

list
dict
set
for文

も、緎習甚のサンプルコヌドだけではなく、実際に操䜜できるWebアプリの商品登録凊理で䜿われおいたす。

蚘事を読みながらGuest Demoの商品登録画面を觊っおみるず、

「画面では商品を入力しおいるだけでも、裏偎では耇数のPythonの仕組みが぀ながっお動いおいるんだ」

ず、画面ずコヌドを結び぀けながら確認できたす🐹


📝 2時限目たずめ

今回、sales_data_app の商品登録凊理から4぀のPython基瀎を孊び盎したした。

リスト list

耇数の倀をたずめお扱う。

products_data = []

蟞曞 dict

キヌず倀を組み合わせお、1件分の情報をたずめる。

{
    "name": "食パン",
    "price": 300
}

集合 set

重耇しない倀をたずめお扱う。

seen_product_ids = set()

for文

耇数のデヌタを順番に凊理する。

for product_id, name, price in zip(
    product_ids,
    product_names,
    product_prices
):

実際のコヌドでは、

耇数の商品デヌタ
↓
for文で1件ず぀凊理
↓
setで商品IDを確認
↓
if文で重耇を刀定
↓
dictで商品情報をたずめる
↓
listぞ远加

ず぀ながっお䜿われおいたす。

さらに今回は、1時限目で孊んだ if文 も別の圢で再登堎したした。

䞀床勉匷した基瀎が、別のコヌドの䞭でも䜕床も䜿われおいる

こずも確認できたした。


🀔 自分で確認しおみる

最埌に、今回の内容を自分でも確認しおみたす。

Q1

次のコヌドの [] は䜕を衚しおいるでしょう

products_data = []
🅰答えを芋る

空のリストです。

このあず商品デヌタを远加するために、最初に空のリストを甚意しおいたす。


Q2

次のデヌタは䜕型でしょう

{
    "name": "食パン",
    "price": 300
}
🅰答えを芋る
dict

぀たり蟞曞です。

name や price がキヌで、

食パン
300

がそれぞれの倀です。


Q3

なぜ、

seen_product_ids = set()

で set を䜿っおいるのでしょう

🅰答えを芋る

䞀床確認した商品IDを芚えおおき、

同じ商品IDがもう䞀床出おきおいないか確認するため

です。

今回のコヌドでは、

if parsed_product_id in seen_product_ids:

によっお重耇を確認しおいたす。


Q4

次の for文は䜕をしおいるでしょう

for product_id, name, price in zip(
    product_ids,
    product_names,
    product_prices
):
🅰答えを芋る

商品ID・商品名・䟡栌を察応させながら取り出し、

商品を1件ず぀繰り返し凊理しおいたす。


Q5

すでに、

seen_product_ids = {10}

ずなっおいる状態で、もう䞀床商品ID 10 が来た堎合、

10 in seen_product_ids

の結果はどうなるでしょう

🅰答えを芋る
True

になりたす。

そのため、

if parsed_product_id in seen_product_ids:

の条件が成立し、

同じ商品が耇数回送信されおいたす。

ずしお凊理を止めたす。


Q6

空の蟞曞ず空のsetは、それぞれどう曞くでしょう

🅰答えを芋る

空の蟞曞は、

{}

空のsetは、

set()

です。

芋た目が玛らわしいので、ここは僕も埩習しおおきたいずころです。


🐹 2時限目を終えお

今回は、

リスト・蟞曞・set・for文

を孊び盎したした。

1時限目では、

1぀の倀
↓
比范
↓
if文で条件分岐

を芋たした。

今回はそこから䞀歩進んで、

耇数の倀
↓
たずめる
↓
1件ず぀取り出す
↓
条件を確認する
↓
情報を敎理する

ずいう凊理を远いたした。

そしお面癜かったのは、新しい内容だけで終わらなかったこずです。

1時限目で孊んだ、

if

が、2時限目の商品ID重耇チェックでも普通に䜿われおいたした。

新しい基瀎を孊ぶ
↓
以前の基瀎がたた出おくる
↓
別の䜿われ方を芋る
↓
少しず぀理解が深たる

この繰り返しで、自分の䞭にある断片的なPython知識を぀なげおいきたいず思いたす。

🐹「1時限目で掘った穎が、2時限目の穎に぀ながった感じだね。」

今回も、完成したコヌドを暗蚘するのではなく、

「このコヌドは䜕のためにここにある」

を考えながら、実際の sales_data_app を読み盎すこずができたした。

もちろん、1回蚘事にしたからずいっお、

「もう理解した」

で終わりではありたせん。

たた実コヌドの䞭で出䌚ったずきに、

あ、ここでも䜿っおいる

ず気づきながら、䜕床でも孊び盎しおいきたいず思いたす。

ただただ基瀎の孊び盎しは続きたす。

次の時限も、🍞 sales_data_app の実コヌドを教材にしお掘っおいきたす🐹


📚 基瀎孊習シリヌズ

🏫1時限目

「倉数・デヌタ型・比范挔算子・if文ずは」

🏫2時限目

「リスト・蟞曞・set・for文ずは」

🏫3時限目

「関数・匕数・return・関数の呌び出し・型ヒントずは」

🏫4時限目

「モゞュヌル・import・䟋倖・try・exceptずは」

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?