web-dev-qa-db-ja.com

1つの要素だけでPythonセットを作成するにはどうすればよいですか?

文字列があり、最初にonlyその文字列を含むセットを作成したい場合、以下よりもPython的なアプローチがありますか?

mySet = set()
mySet.add(myString)

以下は、myStringの文字のセットです。

mySet = set(myString)
45
Thalecress

2.7および3.xでは、次を使用できます。

mySet = {'abc'}
42
dstromberg

たとえば、この簡単な方法:

mySet = set([myString])
21

Python2.7 +の場合

_set_display ::=  "{" (expression_list | comprehension) "}"
_

例:

_>>> myString = 'foobar'
>>> s = {myString}
>>> s
set(['foobar'])

>>> s = {'spam'}
>>> s
set(['spam'])
_

空の_{}_setではなく、dictであることに注意してください。

setのヘルプ:

_class set(object)
 |  set() -> new empty set object
 |  set(iterable) -> new set object
_

ご覧のとおり、set()は反復可能であることを期待し、文字列も反復可能であるため、文字列の文字をセットに変換します。

文字列を反復可能に配置し、set()に渡します。

_>>> set(('foo',))  #Tuple
set(['foo'])
>>> set(['foo'])   #list
set(['foo'])
_
6

set(obj)objを繰り返し処理し、すべての一意の要素をセットに追加します。文字列も反復可能であるため、set()に文字列を渡すと、セット内の一意の文字が取得されます。 objを最初にリストに追加できます。

_set(["mystring"])
_

しかし、それはエレガントなIMOではありません。空の辞書を作成する場合でも、dict()よりも_{}_をお勧めします。こっちも一緒。次の構文を使用します。

_myset = {"mystring"}
_

タプルの場合、その後にコンマが必要であることに注意してください。

_mytuple = ("mystring",)
_
1
SzieberthAdam

セットも変更される可能性が低い場合は、frozensetの使用を検討してください。

mySet = frozenset([myString])
0
Simeon Visser