機械です。どうも毎度ありがとうございます。
文字の修正はしておきました(細かい突っ込みは有難いです)
> 純粋に質問です。
>
> in だと リストかジェネレータが相手になると思うんですが、
> has_keyはそういうことないんですかね? それとも inでも
> 違う?
えっと、質問の意味がわかんないのですが、has_keyはマッピング
専用の関数ですし、そもそもリストやジェネレータには「長さ」さえ
あれば、そこまでの数値しかないわけですし・・・
keys()で得られるのはキーのリストですから、inは………
………と、もしかして………
>>> d=dict([(x,x*100)for x in range(5)])
>>> d
{0: 0, 1: 100, 2: 200, 3: 300, 4: 400}
>>> 1 in d
True
>>> 100 in d
False
>>>
うぁ………keys()って必要ありませんでした(汗)
マッピングにそのままinを使うと、そーいえばkeyのシーケンス
として扱うでしたっけ(for -- inはそうですから)
has_keyもあまり使い方ありませんね(汗)
※入門者用には……言うべきか言わぬべきか………
654もついでに…
> 辞書からキーを検索するのは簡単にできますが、値を
> 検索するのはなめていかないとできませんよね?
> 逆方向の辞書でもない限り。
valuesの中にあるか無いかを拾うだけなら、
value in dict.values()
や
value in dict.itervalues()
が使えますが、値は重複が可能なので、値に対応するキーを
拾おうと思ったら、なめるしか無いですね(それっぽいメソッド
は無いみたいですし)
<ある値のキーを拾い出す>
>>> d = dict([(x,(x % 3))for x in range(10)])
>>> d
{0: 0, 1: 1, 2: 2, 3: 0, 4: 1, 5: 2, 6: 0, 7: 1, 8: 2, 9: 0}
>>> [x for x in d if d[x] == 0]
[0, 3, 6, 9]
>>>
こっちこそ、拡張機能が要るかも………
/機械伯爵/←修行が足りんわっ!/