2011-09-06 14 views
43

Zasadniczo próbuję połączyć wpisy w zestawie, aby wyprowadzić jeden ciąg znaków. Próbuję użyć składni podobnej do funkcji łączenia dla list. Oto moja próba:Python: jak połączyć wpisy w zestawie w jeden ciąg znaków?

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(", ") 

jednak otrzymuję ten błąd: AttributeError: 'set' object has no attribute 'join'

Co to jest równoważne wezwanie do zbiorów?

Odpowiedz

99
', '.join(set_3) 

join to metoda ciąg, a nie metoda set.

+0

Dzięki! Jestem programistą ruby, więc to wszystko dla mnie nowe. – Spencer

+10

jeśli twój zestaw zawiera liczby całkowite/długie, musisz użyć '',' .join (str (s) dla s w zestaw_3) – NiCU

2

Myślę, że po prostu masz go od tyłu.

print ", ".join(set_3) 
+0

nieprawidłowej składni nie? 'print (", ".join (set_3))' – surfer190

+1

Jest ważne w wersji 2.7. – recursive

4

join nazywa na wyrażenie:

print ", ".join(set_3) 
3

Ani set ani list jest taka metoda join, string posiada:

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

Nawiasem mówiąc nie należy używać nazwy list dla twoich zmiennych. Daj mu list_, my_list lub inną nazwę, ponieważ list jest bardzo często używana funkcja python.

2

masz oświadczenie dołączyć do tyłu spróbować:

print ', '.join(set_3) 
22

Zestawy nie posiadają metodę join ale można użyć str.join zamiast.

', '.join(set_3) 

Metoda str.join będzie działać na każdym obiekcie iterowalnym, w tym listach i zestawach.

Uwaga: należy zachować ostrożność, stosując to w zestawach zawierających liczby całkowite; będziesz musiał przekonwertować liczby całkowite na ciągi przed wywołaniem połączenia. Na przykład

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

Seta nie mają rozkaz - więc może stracić swoje zamówienie podczas konwersji listy do zestawu, tzn:

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

Generalnie kolejność pozostanie, ale dla duże zestawy, prawie na pewno nie.

Wreszcie, ludzie, którzy po prostu przygnębiają, zastanawiają się, że nie potrzebujesz "," w złączeniu.

tylko: '' .join (zestaw)

:)

Powiązane problemy