python勉強12日目 共通の文字(1)

アルゴ式のこの問題

全然分からん。
ただ、色々いじってるうちに分かってきたことがあるので記す。

in演算子の2つの役割

in演算子には2つの機能がある。
1つは変数に(複数の値を順番に)代入する機能

for i in range(10):
    print(i)

#0
#1
#2
#3
#4
#5
#6
#7
#8
#9

もう一つは、リストや辞書にある値があるか調べる機能。

animal = ["像","キリン","ネズミ"]


if ("ライオン" in animal):
    print("入ってます")
else:
    print("入っていません")    

#入ってません

for文でin演算子が使われていたら後者。
if文でin演算子が使われていたら後者。

リスト等にない文字列等を検索し、出力する

例えば次のようなリストがあったとする

alphabet = ["a","b","d","e","f","g"]

その下に次のようなコードを書いたとする

for i in range(ord("a"),ord("g") + 1):
    i = chr(i)

これは変数iに"a"から"g"までの文字列を代入するコードだ。

ここまでを整理する。

リストalphabetには「"c"」を除く「"a"」から「"g"」までの文字列が定義されている。
変数iには、「"a"」から「"g"」までの文字列が代入されている。

では、変数iにあってリストalphabetにない文字列を検索して出力するコードを書けないだろうか。
さっきはin演算子を使ったことで、合致するものを検索してその結果に応じた文字列の出力を行うことができた。今回はその逆。合致しないものを検索する。
逆ということは、not演算子を使いそうだ。

この考えのもと書いたコードが以下のコード

alphabet = ["a","b","d","e","f","g"]


for i in range(ord("a"),ord("g") + 1):
    i = chr(i)
    if not i in alphabet:
        print(i) 

実行結果は望んだ通り「"c"」が出力された。

1つのkeyに対して複数のvalueを持つ辞書

通常、辞書は1つのkeyに対して1つのvalueを持つ。
が、

"key":["value","value2",]

と書くことで1つのキーに対して複数のvalueを持つ辞書を作成できる。
種類の違うkey/valueを同じ辞書に代入したいときなどに便利。

testdict = {
"key":["value","value2"],
"key2":["value3","value4"],
"key3":["value5","value6"],
}
print(testdict["key"])
# ['value', 'value2']


この記事が気に入ったらサポートをしてみませんか?