[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))특정 예를 들어. 또는 다른 이유로 루프에서 값을 생성 해야하는 경우

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

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


답변

세트 정의

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”메소드로 설명 된대로 목록 및 세트에서 요소를 추가 할 수 있습니다.


답변

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

>>> 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에서 설정할 요소를 추가하는 방법”을 찾을 때 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'}.


답변

이 작업을 수행하는 방법은 원래 세트와 목록에 추가하고 싶은 값을 모두 추가 한 다음 다시 세트로 변환하는 것입니다.

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()메소드로 시도하면 도움이 됩니다 .


답변

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

또는

keep.update(np.arange(11))