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
joinmétodo, pero puedes usarlostr.joinen su lugar.', '.join(set_3)El
str.joinmé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
joinllama en la cadena:print ", ".join(set_3)fuente
Ni el
setni ellisttiene tal métodojoin, la cadena lo tiene:','.join(set(['a','b','c']))Por cierto, no debes usar un nombre
listpara tus variables. Asígnele un nombrelist_,my_listo algún otro nombre, porquelistse 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.