web-dev-qa-db-ja.com

Pythonで集合に値を追加する

私はこのようなセットを持っています:

keep = set(generic_drugs_mapping[drug] for drug in drug_input)

このセットに[0,1,2,3,4,5,6,7,8,9,10]という値を追加するにはどうすればいいですか?

keep.update(yoursequenceofvalues)

例えばあなたの特定の例のためのkeep.update(xrange(11))。あるいは、他の何らかの理由でhaveを使用してループ内で値を生成すると、

for ...whatever...:
  onemorevalue = ...whatever...
  keep.add(onemorevalue)

しかし、もちろん、1回の.update呼び出しで一括して実行する方が、それ以外の方法で実行可能な場合には、速くて便利です。

342
Alex Martelli

セットを定義

a = set()

単一の値を追加するにはaddを使用してください

a.add(1)
a.add(2)

更新可能な値を追加するためにupdateを使う

a.update([3,4])

コレクションを確認してください

a
Out[*n*]: {1, 2, 3, 4}

それはそれです - 覚えておいてください、 更新 それが繰り返し可能なら(リストまたはタプル)または 追加 そうでないなら/ハッピーコーディング!

221
RandallShanePhD

|演算子を使って2つの集合を連結することもできます(集合論では union )。

>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}

あるいは|=を使ったもっと短い形式:

>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}

注: Python 2.7より前のバージョンでは、{...}の代わりにset([...])を使用してください。

91
nyuszika7h

このようにupdateを使用してください。

keep.update(newvalues)
40
sberry

この質問は、「Pythonにsetへの要素の追加方法」を見たときにGoogleに表示される最初の質問です。したがって、文字列全体をsetに追加する場合は.add()を付けて追加する必要があります.update()ではなく。

内容がfoo_strである文字列'this is a sentence'があり、set()と等しいセットbar_setがあるとします。

bar_set.update(foo_str)を実行すると、セットの内容は{'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}になります。

bar_set.add(foo_str)を実行すると、セットの内容は{'this is a sentence'}になります。

8
lalilulelost
keep.update((0,1,2,3,4,5,6,7,8,9,10))

または

keep.update(np.arange(11))
1
rishi jain

私にとっては、Python 3では、このように単純に機能しています。

keep = keep.union((0,1,2,3,4,5,6,7,8,9,10))

正しいかどうかわかりませんが….

0
decadenza

これを行う方法は、元のセットと追加したい値の両方をリストに変換し、それらを追加してからセットに戻すことです。

setMenu = {"Eggs", "Bacon"}
print(setMenu)
> {'Bacon', 'Eggs'}
setMenu = set(list(setMenu) + list({"Spam"}))
print(setMenu)
> {'Bacon', 'Spam', 'Eggs'}
setAdditions = {"Lobster", "Sausage"}
setMenu = set(list(setMenu) + list(setAdditions))
print(setMenu)
> {'Lobster', 'Spam', 'Eggs', 'Sausage', 'Bacon'}

こうすれば、同じロジックを使って複数のセットを簡単に追加することもできます。.update()メソッドでそれをやろうとするとTypeError: unhashable type: 'set'になります。

0
Kira Resari