1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. 集合(1)

集合(1)

2019-03-29_145602_RM3

集合は

値を放り出してキーだけを残した辞書のようなもの。
また、集合は、何かがあるかどうかだけわかればよく、ほかの
ことは知らなくてもよいときに使う。キーになんらかの情報を
値として追加したい場合には、辞書を使う

set()による作成

[]を使えば空リストが作れるので、{}を使えば空集合を作れるような
気がするかもしれないが、実際には{}で作られるのは空辞書です。
なぜか?、辞書の方が先にPythonにふくまれており、波かっこを
自分の物にしているからです。

>>> empty_set = set()
>>> empty_set
set()

>>> even_number = {0, 2, 4, 6, 8}

set()によるほかのデータ型から集合への変換

リスト、文字列、タプル、辞書から重複する値を取り除けば集合を
作ることができる
◎まず一部の文字が複数回登場する文字列から
>>> set( 'letters' )
{'l', 'e', 't', 'r', 's'}

◎リストから
>>> set(['Dasher', 'Dancer', 'Prancer', 'Mason=Dixon'])
{'Dancer', 'Dasher', 'Prancer', 'Mason=Dixon'}

◎タプルから集合を作る
>>> set(('Ummagumma', 'Echoes', 'Atom Heart Mother'))
{'Ummagumma', 'Atom Heart Mother', 'Echoes'}

◎set()に辞書を渡すと、キーだけが使われる。
>>> set({'apple': 'red', 'orange': 'orange', 'cherry': 'red'})
{'apple', 'cherry', 'orange'}

inを使った値の有無のテスト

集合の用途として最も一般的なのがこれです。drinkという辞書を作る。
キーはカクテルの名前、値はその材料だ
>>> drinks = {
'martini': {'vodka', 'vermouth'}
'black russian': {'vodka', 'kahlua'}
'white russian': {'cream', 'kahlua', 'vodka'}
'manhattan': {'rye', 'vermouth', 'bitters'}
'screwdriver': {'orenge juice', 'vodka'}
}

◎どのカクテルにウオッカは入っているのだろうか?
>>> for name, contents in drinks.items():
if 'vodka' in contents: print(name)


screwdriver
martini
black russian
white russian

◎ウオッカは飲みたいが、クリームはいや、ベルモットもいや?
>>> for name, contents in drinks.items():
if 'vodka' in contents and not('vermouth' in contents or 'cream' in contents): print(name)


screwdriver
black russian