前提
PythonのFor文のネストの動きがリスト形式と辞書形式では違うのかを教えていただき
かつ同じ動きにするためにはどのように対応したら良いかを教えて頂きたいです。
独学かつ初心者のため、お見苦しいソースコードではありますが、ご容赦ください。
実現したいこと
下記2つのCSVにて「No」をキーにして一致した部分を出力させたい。
For文のネストの動きをリスト形式と同じ形に動かしたい。
goods.csv
1No,商品名 21,いちご 32,もも 43,すいか
price.csv
1No,価格 21,350 32,100 43,800
発生している問題・エラーメッセージ
下記パスの箇所にてfor frice_csvdataが2回目以降の繰り返しが行われない。 for goods_csvdata in goods_csvline: for price_csvdata in price_csvline:
該当のソースコード
python
1 2#import 読み込み 3import csv 4 5#入力データパス 6indir = "" #ローカルパスを指定 7 8#goods.csvを読み込み 9goods_csvfile = open(indir + "goods.csv", "r", encoding ="ms932", errors = "", newline = "") 10#goods.csv辞書形式で取得 11goods_csvline = csv.DictReader(goods_csvfile, delimiter=",", doublequote = True, lineterminator = "\r\n", quotechar = '"', skipinitialspace = True) 12 13#price.csvを読み込み 14price_csvfile = open(indir + "price.csv", "r", encoding ="ms932", errors = "", newline = "") 15#goods.csv辞書形式で取得 16price_csvline = csv.DictReader(price_csvfile, delimiter=",", doublequote = True, lineterminator = "\r\n", quotechar = '"', skipinitialspace = True) 17 18#Noが一致したときに商品名と価格をあわせて表示 19for goods_csvdata in goods_csvline: 20 for price_csvdata in price_csvline: 21 if goods_csvdata["No"] == price_csvdata["No"]: 22 print (str(goods_csvdata["商品名"])+str(price_csvdata["価格"])) 23 else: 24 continue
試したこと
python
1#リスト形式 2a = [1,2] 3b = [3,4] 4 5for c in a : 6 for d in b: 7 print(str(c) + "," + str(d)) 8 9#print結果 101,3 111,4 122,3 132,4
print結果は想定したFor文のネストの動きとなっていた。
補足情報(FW/ツールのバージョンなど)
Python バージョン:3.10.4
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/23 04:05