파이썬 : 집합의 항목을 하나의 문자열로 결합하는 방법은 무엇입니까?


84

기본적으로 하나의 문자열을 출력하기 위해 항목을 집합으로 결합하려고합니다. 목록에 대한 조인 함수와 유사한 구문을 사용하려고합니다. 내 시도는 다음과 같습니다.

list = ["gathi-109","itcg-0932","mx1-35316"]
set_1 = set(list)
set_2 = set(["mx1-35316"])
set_3 = set_1 - set_2
print set_3.join(", ")

그러나이 오류가 발생합니다. AttributeError: 'set' object has no attribute 'join'

세트에 대한 동등한 호출은 무엇입니까?

답변:



31

집합에는 join메서드가 없지만 str.join대신 사용할 수 있습니다 .

', '.join(set_3)

str.join메서드는 목록과 집합을 포함한 모든 반복 가능한 개체에서 작동합니다.

참고 : 정수를 포함하는 세트에서 사용하는 데주의하십시오. 조인을 호출하기 전에 정수를 문자열로 변환해야합니다. 예를 들면

set_4 = {1, 2}
', '.join(str(s) for s in set_4)

5

join문자열에 호출됩니다

print ", ".join(set_3)

4

또한 그러한 방법 set도 없으며 string에는 다음이 있습니다.listjoin

','.join(set(['a','b','c']))

그런데 list변수에 이름 을 사용해서는 안됩니다 . 그것을주고 list_, my_list때문에 또는 다른 이름을 list자주 파이썬 함수를 사용한다.


4

세트의 주문을하지 않는다 - 당신이 그렇게 할 수 는 집합, 즉으로 목록을 변환 할 때 주문을 잃게 :

>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')

일반적으로 순서는 유지되지만 큰 세트의 경우 거의 확실하지 않습니다.

마지막으로 사람들이 궁금해하는 경우 조인에 ','가 필요하지 않습니다.

그냥 : ''.join (set)

:)


3

나는 당신이 그것을 거꾸로 가지고 있다고 생각합니다.

print ", ".join(set_3)

잘못된 구문 번호? print(", ".join(set_3))
스티븐

1
2.7에서 유효합니다.
재귀 적

3

조인 문이 거꾸로 시도됩니다.

print ', '.join(set_3)

0

다음과 같은 경우를 처리하는 방법을 작성했습니다.

  • 크기 1을 설정하십시오. A ", ".join({'abc'})가 반환 "a, b, c"됩니다. 내가 원하는 출력은 "abc".
  • 정수를 포함하여 설정합니다.
  • 빈 세트가 반환되어야합니다. ""
def set_to_str(set_to_convert, separator=", "):
        set_size = len(set_to_convert)
        if not set_size:
            return ""
        elif set_size == 1:
            (element,) = set_to_convert
            return str(element)
        else:
            return separator.join(map(str, set_to_convert))

" ".join({'abc'})원하는 O / P를 얻는 데 사용할 수 있습니다 "abc". repl.it에서 실행 코드
Abhijeet

흥미 롭군. set ( 'abc')와 { 'abc'}의 동작이 다르다는 것을 깨달았습니다. 그게 나를 쫓아 낸 것입니다.
Fernando Irarrázaval G

나는 업데이트 한 실행 코드 에 대한 작동 설정사전
Abhijeet

참고로, { 'abc'}는 집합입니다. 그리고 "".join(set(ip_data))set는 세 개의 요소 { 'a', 'b', 'c'}를 생성하지만 순서를 유지하지 않기 때문에 문자의 무작위 순서 (예 : 'bca')를 제공합니다.
Fernando Irarrázaval G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.