Pythonのセットに値を追加する


372

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

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

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

回答:


405
keep.update(yoursequenceofvalues)

例えば、keep.update(xrange(11))あなたの具体的な例のために。または、他の理由でループで値を生成する必要がある場合は、

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

しかし、もちろん、1回の.update呼び出しで一括して行う方が、他の方法で実現可能な場合は、より速くて便利です。


78
.add単一のアイテムを.update追加し、いくつかのアイテムを追加します。あれは正しいですか?
ThorSummoner

16
@ThorSummonerはい、.add単一のハッシュ.update可能な型を期待し、反復可能なオブジェクトを期待します
Bonnie

4
更新で文字列を追加すると、反復可能であるため、文字列の文字ごとに1つのアイテムが追加されます。
hgolov 2018

2
「全体」のオブジェクトとしての文字列は、.addではなく.updateで追加されるべきであることに注意することは確かに重要です。
lalilulelost

277

セットを定義

a = set()

追加を使用して単一の値を追加する

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

updateを使用して、タプル、セット、リスト、またはフリーズセットから要素を追加します

a.update([3,4])

>> print(a)
{1, 2, 3, 4}

タプルまたはフリーズセット自体を追加する場合は、addを使用します。

a.add((5, 6))

>> print(a)
{1, 2, 3, 4, (5, 6)}

注:セット要素はハッシュ可能である必要があり、リストは変更可能と見なされるため、セットにリストを追加することはできません。また、セットに他のセットを追加することもできません。ただし、「。update」メソッドで示されているように、リストとセットから要素を追加できます。


105

|演算子を使用して、2つのセットを連結することもできます(集合論では集合)。

>>> 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([...])代わりにを使用してください{...}


1
セットのリストがある場合は、それらをすべて組み合わせるmy_setsことができますbig_set = my_sets[0].union(*my_sets[1:])
zelusp


10

この質問は、「Pythonで設定する要素を追加する方法」を調べたときにGoogleに表示される最初の質問です。そのため、文字列全体をセットに追加する.add()場合は、ない.update()

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

そうすれば bar_set.update(foo_str)、セットの内容はになります{'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}

そうすればbar_set.add(foo_str)、セットの内容はになります{'this is a sentence'}


3

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

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'}

このようにして、同じロジックを使用して複数のセットを簡単に追加することもできます。TypeError: unhashable type: 'set'これは、.update()メソッドでそれを実行しようとした場合に役立ちます。



0

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.