k_list = [
'おひつじ座',
'おうし座',
'ふたご座',
'かに座',
'しし座',
'おとめ座',
'てんびん座',
'さそり座',
'いて座',
'やぎ座',
'みずがめ座',
'うお座',
]
b_type = [
"A型",
"B型",
"O型",
"AB型",
]
s_list = [
"男性",
"女性",
]
base_dic = {}
c = 0
for k in k_list:
for b in b_type:
for s in s_list:
c = c + 1
base_dic[c] = k + b + s
for key,value in base_dic.items():
print(f"{key}:{value}")
k_list = [
'おひつじ座',
'おうし座',
'ふたご座',
'かに座',
'しし座',
'おとめ座',
'てんびん座',
'さそり座',
'いて座',
'やぎ座',
'みずがめ座',
'うお座',
]
b_type = [
"A型",
"B型",
"O型",
"AB型",
]
s_list = [
"男性",
"女性",
]
data = {}
bs_list = []
cnt = 1
for h, kl in enumerate(k_list):
for i, bl in enumerate(b_type):
for j, sl in enumerate(s_list):
print(f'{cnt}:{k_list[h]}{b_type[i]}{s_list[j]}')
bs_list.append((cnt, f'{k_list[h]}{b_type[i]}{s_list[j]}'))
cnt += 1
data |= bs_list
2022/07/21 18:14
小川 慶一さんのコメント
(コメントID: 7622)
コメントありがとうございます。 おお...ビット演算子が出てきた (^^;
2022/07/21 18:40
keiko ishさんのコメント
(コメントID: 7623)
|=の左辺に右辺を累積代入して更新すると、簡単に辞書作れて便利ですね😄
2022/07/21 20:24
たかちゃんさんのコメント
(コメントID: 7626)
いつもありがとうございます。まさに、私が書きたかった動きです!(^^) 早速、簡単なデータでテストをして動きを確認しました。 appendでリストに追加する際に、(()) カッコを二重でくくると、1つの要素の中に2つ値を入れる事が出来るのですね。 こちらも詳細は不明ですが、とりあえず動かしてみたら辞書に入りました。(@@) data |= bs_list Python、面白いですね。何でもできそうな気がしてきました。
data = {}
num = []
elem = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]
for i in range(10):
num.append((i, elem[i]))
print(type(num))
print(len(num))
for n in num:
print(n)
data |= num
for key, value in data.items():
print(f"{key}番目は、{value}です。")
2022/07/23 06:33
たかちゃんさんのコメント
(コメントID: 7627)
すみません。For分の所は、enumerateを使用しれば良いので、これでした。(^^;;
num = []
elem = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]
for i, el in enumerate(elem):
num.append((i, elem[i]))
keiko ishさんの投稿
(投稿ID: 5342)
出力結果
{'おひつじ座': {'month': 3, 'day': 21}, 'おうし座': {'month': 4, 'day': 20}, 'ふたご座': {'month': 5, 'day': 21}, 'かに座': {'month': 6, 'day': 23}, 'しし座': {'month': 7, 'day': 23}, 'おとめ座': {'month': 8, 'day': 23}, 'てんびん座': {'month': 9, 'day': 23}, 'さそり座': {'month': 10, 'day': 24}, 'いて座': {'month': 11, 'day': 23}, 'やぎ座': {'month': 12, 'day': 22}, 'みずがめ座': {'month': 1, 'day': 20}, 'うお座': {'month': 2, 'day': 19}}
以下の式と同じ動作をします。
下の方が長いですが、下の文は条件分岐が可能です。
keiko ishさんのコメント
(コメントID: 7609)
keiko ishさんのコメント
(コメントID: 7610)
例)i, (k_list, v_list)
出力結果
0 ('おひつじ座', {'month': 3, 'day': 21})
1 ('おうし座', {'month': 4, 'day': 20})
2 ('ふたご座', {'month': 5, 'day': 21})
3 ('かに座', {'month': 6, 'day': 23})
4 ('しし座', {'month': 7, 'day': 23})
5 ('おとめ座', {'month': 8, 'day': 23})
6 ('てんびん座', {'month': 9, 'day': 23})
7 ('さそり座', {'month': 10, 'day': 24})
8 ('いて座', {'month': 11, 'day': 23})
9 ('やぎ座', {'month': 12, 'day': 22})
10 ('みずがめ座', {'month': 1, 'day': 20})
11 ('うお座', {'month': 2, 'day': 19})
たかちゃんさんのコメント
(コメントID: 7611)
(結局、今回は使いませんでしたが・・。(^^;)色々勉強になりました。いつもありがとうございます!)
牡羊座A型男性
牡羊座B型男性
・・・といった具合です。
牡羊座をkeyにして、dictionaryやenumerateで番号ふって辞書に格納と思いましたが
keyの牡羊座が一緒だと全て上書きされてしまう事に気がつかずハマりました。(@@)
小川 慶一さんのコメント
(コメントID: 7619)
zipについてはいつ取り扱うか考え中です。
ウェブプログラミングでは、案外重要度低いんですよね。
keiko ishさんのコメント
(コメントID: 7621)
dataと言う辞書にまとめるコードを作ってみました。
(講座では、辞書を作ってから出力するやり方が推奨です)
小川 慶一さんのコメント
(コメントID: 7622)
おお...ビット演算子が出てきた (^^;
keiko ishさんのコメント
(コメントID: 7623)
たかちゃんさんのコメント
(コメントID: 7626)
早速、簡単なデータでテストをして動きを確認しました。
appendでリストに追加する際に、(()) カッコを二重でくくると、1つの要素の中に2つ値を入れる事が出来るのですね。
こちらも詳細は不明ですが、とりあえず動かしてみたら辞書に入りました。(@@)
data |= bs_list
Python、面白いですね。何でもできそうな気がしてきました。
たかちゃんさんのコメント
(コメントID: 7627)
keiko ishさんのコメント
(コメントID: 7629)
(key, value)のように、タプルにしたリストを|=の右辺に持ってくると、辞書を作ってくれます。
出力結果
{0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F', 6: 'G', 7: 'H', 8: 'I', 9: 'J'}
for文の中に、|=を入れると、numが更新されたら、どんどん上書き更新されて
最新の辞書を作ることができます😄
小川 慶一さんのコメント
(コメントID: 7634) 添付ファイルのダウンロード権限がありません
>こちらも詳細は不明ですが、とりあえず動かしてみたら辞書に入りました。(@@)
↓途中に改行を入れて見やすくしてみますね。
f'{k_list[h]}{b_type[i]}{s_list[j]}' は要は文字列なので、いったん以下のように雑に書き直します。
これで、だいぶ見やすくなりましたかね。
(cnt, '文字列') の正体は tuple です。
つまり、 bs_list.append では、 bs_list にタプルを次々に追加しているわけです。
以下で、 # でコメントを入れた行にブレークポイントを入れて、動作を止めてください。
そして、動作が止まったところで、この行全体を選択して evaluate expression のダイアログを呼び出してしてこの行全体を評価してみてください。
tuple型だと分かると思います。
小川 慶一さんのコメント
(コメントID: 7635)
以下では、 onigiri_tuple 自体は tuple です。
また、 onigiri_tuple の各要素は tuple ですね。
以下は、上に紹介したサンプルコードの出力結果です。
小川 慶一さんのコメント
(コメントID: 7636)
onigiri_list1, onigiri_list2 での変数への値投入はまったく同じ処理です。
前者は、「(()) カッコを二重でくくる」ように見えますね。
たかちゃんさんのコメント
(コメントID: 7639)
色々とありがとうございました。
(cnt, '文字列') の正体は tuple という事を確認しました。bs_list.append ()とtupleの()が重なっていて、すっかりappendの特殊な機能かと思っていました。(^^;;
data |= numの件も、「(key, value)のように、タプルにしたリストを|=の右辺に持ってくると、辞書を作ってくれます。」でよく分かりました。Googleで調べてもよく理解できなかったのですが、お陰様で理解できました。(^o^)
いつもありがとうございます。m(_ _)m
田中 宏明さんのコメント
(コメントID: 7643)
本日、ここに辿り着きました。
「listの要素がtuple(key, value)。それを辞書にすることができる。」
面白いです。
小川 慶一さんのコメント
(コメントID: 7646)
たとえば辞書を for 文でループするときの以下の key, value も地味にタプルだったりします。