파이썬에서 집합에 값 추가


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)

그러나 물론, 가능하면 한 번의 .update호출 로 대량으로 처리하는 것이 더 빠르고 간편합니다.


78
.add단일 항목을 .update추가하고 여러 항목을 추가합니다. 그 맞습니까?
ThorSummoner

16
@ThorSummoner 예, .add단일 해시 가능 유형을 .update기대하고 반복 가능한 객체 를 기대합니다
Bonnie

4
업데이트하여 문자열을 추가하면 반복 가능하므로 문자열의 문자 당 하나의 항목을 추가합니다!
hgolov

2
"전체"객체로서 문자열에을 추가 .add하지 말아야한다는 사실을 알아 두는 것이 중요합니다 .update.
lalilulelost

277

세트 정의

a = set()

add를 사용하여 단일 값을 추가하십시오.

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

업데이트를 사용하여 튜플, 세트, ​​목록 또는 고정 세트의 요소를 추가하십시오.

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

|연산자를 사용하여 두 세트를 연결할 수도 있습니다 ( 세트 이론의 결합 ).

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

45

다음 update과 같이 사용하십시오 .

keep.update(newvalues)

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

저에게 파이썬 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.