목록에 세트 추가
기존 세트에 값 목록을 추가하려면 어떻게 해야 합니까?
목록 내용 추가
또는 사용|=
연산자:
>>> a = set('abc')
>>> a
{'a', 'b', 'c'}
>>> xs = ['d', 'e']
>>> a.update(xs)
>>> a
{'e', 'b', 'c', 'd', 'a'}
>>> xs = ['f', 'g']
>>> a |= set(xs)
>>> a
{'e', 'b', 'f', 'c', 'd', 'g', 'a'}
목록 자체 추가
set 요소는 해시 가능해야 하므로 목록 자체를 세트에 직접 추가할 수 없습니다.
대신 먼저 목록을 태플로 변환할 수 있습니다.
>>> a = {('a', 'b', 'c')}
>>> xs = ['d', 'e']
>>> a.add(tuple(xs))
>>> a
{('a', 'b', 'c'), ('d', 'e')}
목록이 변경 가능하므로 목록에 추가할 수 없습니다. 즉, 목록에 추가한 후 목록의 내용을 변경할 수 있습니다.
그러나 튜플의 내용은 변경할 수 없으므로 세트에 튜플을 추가할 수 있습니다.
>>> a.add(('f', 'g'))
>>> print a
set(['a', 'c', 'b', 'e', 'd', ('f', 'g')])
편집: 일부 설명:이 매뉴얼에서는set
개별 해시 가능 개체의 순서가 정렬되지 않은 모음으로 표시됩니다.이러한 작업을 수행할 때마다 개별 요소를 확인하는 것보다 요소를 검색, 추가 및 제거할 수 있도록 개체를 해시할 수 있어야 합니다.사용된 특정 알고리즘은 위키피디아 문서에 설명되어 있습니다.비단뱀 해시 알고리즘은 effbot.org과 비단뱀에 설명되어 있습니다.__hash__
python 참조의 함수.
몇 가지 사실:
- 사전 키뿐만 아니라 설정 요소도 해시 가능해야 합니다.
- 캐시할 수 없는 데이터 유형:
list
: 사용tuple
대신set
: 사용frozenset
대신dict
: 공식적인 대응책은 없지만 몇 가지 레시피가 있습니다.
- 오브젝트 인스턴스는 기본적으로 해시 가능하며 각 인스턴스는 고유한 해시를 가집니다.python 참조에 설명된 대로 이 동작을 재정의할 수 있습니다.
목록에 있는 요소를 세트에 추가하려면update
https://docs.python.org/2/library/sets.html 에서
s.update(t): t에서 추가된 요소를 포함한 반환 집합
예.
>>> s = set([1, 2])
>>> l = [3, 4]
>>> s.update(l)
>>> s
{1, 2, 3, 4}
대신 전체 목록을 단일 요소로 세트에 추가하려면 목록을 해시할 수 없으므로 추가할 수 없습니다.대신 태플을 추가할 수 있습니다.s.add(tuple(l))
자세한 것은, 「TypeError:uncashable type:built-in set 함수를 사용하는 경우의 리스트」도 참조해 주세요.
이것이 도움이 되기를 바랍니다.
>>> seta = set('1234')
>>> listb = ['a','b','c']
>>> seta.union(listb)
set(['a', 'c', 'b', '1', '3', '2', '4'])
>>> seta
set(['1', '3', '2', '4'])
>>> seta = seta.union(listb)
>>> seta
set(['a', 'c', 'b', '1', '3', '2', '4'])
기능에 주목해 주세요.set.update()
문서에는 다음과 같이 기재되어 있습니다.
그 자체와 다른 조합으로 세트를 업데이트합니다.
목록 개체는 캐시할 수 없습니다.하지만 당신은 그것들을 두 배로 돌려보내는 것이 좋을지도 모릅니다.
집합에는 가변(변경 가능한) 요소/구성원을 포함할 수 없습니다.목록은 가변이므로 집합의 구성원이 될 수 없습니다.
세트는 가변이므로 세트를 가질 수 없습니다!프로젠세트는 세트로 드실 수 있습니다.
(같은 종류의 "상호성 요구"가 dict 키에도 적용됩니다.)
다른 답변은 이미 코드를 알려줬습니다. 이 답변이 약간의 통찰력을 주길 바랍니다.나는 알렉스 마르텔리가 더 자세한 답변을 해주길 바란다.
나는 오늘 비슷한 일을 해야 한다는 것을 알았다.알고리즘은 세트에 추가할 필요가 있는 새 목록을 작성할 때는 알고 있었지만 목록 동작이 언제 완료되었는지 알 수 없었습니다.
어쨌든, 내가 원하는 행동은 세트로 사용할 행동이었다.id
hash
알게 mydict[id(mylist)] = mylist
myset.add(mylist)
내가 원하는 행동을 할 수 있게 해줬지
목록이 아닌 태플을 추가하는 경우:
>>> a=set('abcde')
>>> a
set(['a', 'c', 'b', 'e', 'd'])
>>> l=['f','g']
>>> l
['f', 'g']
>>> t = tuple(l)
>>> t
('f', 'g')
>>> a.add(t)
>>> a
set(['a', 'c', 'b', 'e', 'd', ('f', 'g')])
목록이 있는 경우 위와 같이 태플로 변환할 수 있습니다.태플은 불변하기 때문에 세트에 추가할 수 있습니다.
해시 가능한 튜플을 사용할 수 있습니다(목록처럼 변경 가능한 개체를 해시할 수 없습니다).
>>> a = set("abcde")
>>> a
set(['a', 'c', 'b', 'e', 'd'])
>>> t = ('f', 'g')
>>> a.add(t)
>>> a
set(['a', 'c', 'b', 'e', 'd', ('f', 'g')])
저는 보통 이렇게 합니다.
def add_list_to_set(my_list, my_set):
[my_set.add(each) for each in my_list]
return my_set
도 한번 써보세요.*
뭇매를 맞다
>>> a=set('abcde')
>>> a
{'a', 'd', 'e', 'b', 'c'}
>>> l=['f','g']
>>> l
['f', 'g']
>>> {*l, *a}
{'a', 'd', 'e', 'f', 'b', 'g', 'c'}
>>>
편집자 외 버전:
a=set('abcde')
l=['f', 'g']
print({*l, *a})
출력:
{'a', 'd', 'e', 'f', 'b', 'g', 'c'}
언급URL : https://stackoverflow.com/questions/1306631/add-list-to-set
'source' 카테고리의 다른 글
sql mariadb, 파티션 위의 오류 구문 (0) | 2023.02.07 |
---|---|
Azure 도입에 시간이 걸리는 이유는 무엇입니까? (0) | 2023.02.07 |
MySQL BOOL과 BOUALAL 열 데이터 유형의 차이점은 무엇입니까? (0) | 2023.02.07 |
Azure Blob 스토리지와파일 서비스 (0) | 2023.02.07 |
Excel(.XLS 및 .X)을 작성하려면Microsoft Office 를 인스톨 하지 않고, C# 에 LSX) 파일을 인스톨 할 수 있습니까? (0) | 2023.02.07 |