私はこのようなセットを持っています:
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
呼び出しで一括して実行する方が、それ以外の方法で実行可能な場合には、速くて便利です。
セットを定義
a = set()
単一の値を追加するにはaddを使用してください
a.add(1)
a.add(2)
更新可能な値を追加するためにupdateを使う
a.update([3,4])
コレクションを確認してください
a
Out[*n*]: {1, 2, 3, 4}
それはそれです - 覚えておいてください、 更新 それが繰り返し可能なら(リストまたはタプル)または 追加 そうでないなら/ハッピーコーディング!
|
演算子を使って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([...])
を使用してください。
このようにupdate
を使用してください。
keep.update(newvalues)
この質問は、「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'}
になります。
keep.update((0,1,2,3,4,5,6,7,8,9,10))
または
keep.update(np.arange(11))
私にとっては、Python 3では、このように単純に機能しています。
keep = keep.union((0,1,2,3,4,5,6,7,8,9,10))
正しいかどうかわかりませんが….
これを行う方法は、元のセットと追加したい値の両方をリストに変換し、それらを追加してからセットに戻すことです。
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'
になります。