Básicamente, estoy tratando de unir las entradas en un conjunto para generar una cadena. Estoy tratando de usar una sintaxis similar a la función de unión para listas. Aquí está mi intento:
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(", ")
Sin embargo, obtengo este error: AttributeError: 'set' object has no attribute 'join'
¿Cuál es la convocatoria equivalente para conjuntos?
python
list
set
python-2.7
Spencer
fuente
fuente
', '.join(str(s) for s in set_3)
Los conjuntos no tienen un
join
método, pero puedes usarlostr.join
en su lugar.', '.join(set_3)
El
str.join
método funcionará en cualquier objeto iterable, incluidas listas y conjuntos.Nota: tenga cuidado al usar esto en conjuntos que contengan números enteros; deberá convertir los enteros en cadenas antes de la llamada para unirse. Por ejemplo
set_4 = {1, 2} ', '.join(str(s) for s in set_4)
fuente
Se
join
llama en la cadena:print ", ".join(set_3)
fuente
Ni el
set
ni ellist
tiene tal métodojoin
, la cadena lo tiene:','.join(set(['a','b','c']))
Por cierto, no debes usar un nombre
list
para tus variables. Asígnele un nombrelist_
,my_list
o algún otro nombre, porquelist
se usa con mucha frecuencia la función de Python.fuente
Los conjuntos no tienen un pedido, por lo que puede perder su pedido cuando convierta su lista en un conjunto, es decir:
>>> orderedVars = ['0', '1', '2', '3'] >>> setVars = set(orderedVars) >>> print setVars ('4', '2', '3', '1')
Por lo general, el orden se mantendrá, pero es casi seguro que no lo hará en conjuntos grandes.
Finalmente, en caso de que la gente se pregunte, no necesita un ',' en la combinación.
Solo: '' .join (conjunto)
:)
fuente
Creo que lo tienes al revés.
print ", ".join(set_3)
fuente
print(", ".join(set_3))
Tienes la declaración de unión al revés, prueba:
print ', '.join(set_3)
fuente
Escribí un método que maneja los siguientes casos extremos:
", ".join({'abc'})
volverá"a, b, c"
. Mi salida deseada fue"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))
fuente
" ".join({'abc'})
para obtener el o / p deseado"abc"
. código ejecutable en repl.it"".join(set(ip_data))
da un orden aleatorio de las letras (ejemplo, 'bca') porque el conjunto crea tres elementos {'a', 'b', 'c'} pero no conserva el orden.