Ответ 1
', '.join(set_3)
join
- это строковый метод, а не заданный метод.
В принципе, я пытаюсь объединить записи в наборе, чтобы вывести одну строку. Я пытаюсь использовать синтаксис, похожий на функцию соединения для списков. Вот моя попытка:
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'
Что такое эквивалентный вызов для множеств?
', '.join(set_3)
join
- это строковый метод, а не заданный метод.
Наборы не имеют метода join
, но вы можете вместо этого использовать str.join
.
', '.join(set_3)
Метод str.join
будет работать над любым итерабельным объектом, включая списки и наборы.
Примечание: будьте осторожны при использовании этого на наборах, содержащих целые числа; вам нужно будет преобразовать целые числа в строки перед вызовом для соединения. Например
set_4 = {1, 2}
', '.join(str(s) for s in set_4)
Вызывается join
в строке:
print ", ".join(set_3)
Кроме того, set
и list
имеет такой метод join
, строка имеет его:
','.join(set(['a','b','c']))
Кстати, вы не должны использовать имя list
для своих переменных. Дайте ему list_
, my_list
или другое имя, потому что list
очень часто используется функция python.
У набора нет заказа - поэтому вы можете потерять свой заказ, когда конвертируете свой список в набор, т.е.:
>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')
Как правило, порядок останется, но для больших множеств он почти наверняка не будет.
Наконец, просто заставляйте людей задаваться вопросом, вам не нужно "," в соединении.
Только: '..join(set)
:)
Думаю, ты просто отдал его назад.
print ", ".join(set_3)
У вас есть запрос на объединение назад:
print ', '.join(set_3)