Подтвердить что ты не робот

Python: как присоединиться к записям в наборе в одну строку?

В принципе, я пытаюсь объединить записи в наборе, чтобы вывести одну строку. Я пытаюсь использовать синтаксис, похожий на функцию соединения для списков. Вот моя попытка:

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'

Что такое эквивалентный вызов для множеств?

4b9b3361

Ответ 1

', '.join(set_3)

join - это строковый метод, а не заданный метод.

Ответ 2

Наборы не имеют метода join, но вы можете вместо этого использовать str.join.

', '.join(set_3)

Метод str.join будет работать над любым итерабельным объектом, включая списки и наборы.

Примечание: будьте осторожны при использовании этого на наборах, содержащих целые числа; вам нужно будет преобразовать целые числа в строки перед вызовом для соединения. Например

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

Ответ 3

Вызывается join в строке:

print ", ".join(set_3)

Ответ 4

Кроме того, set и list имеет такой метод join, строка имеет его:

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

Кстати, вы не должны использовать имя list для своих переменных. Дайте ему list_, my_list или другое имя, потому что list очень часто используется функция python.

Ответ 5

У набора нет заказа - поэтому вы можете потерять свой заказ, когда конвертируете свой список в набор, т.е.:

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

Как правило, порядок останется, но для больших множеств он почти наверняка не будет.

Наконец, просто заставляйте людей задаваться вопросом, вам не нужно "," в соединении.

Только: '..join(set)

:)

Ответ 6

Думаю, ты просто отдал его назад.

print ", ".join(set_3)

Ответ 7

У вас есть запрос на объединение назад:

print ', '.join(set_3)