Fondamentalement, j'essaie de réunir les entrées d'un ensemble afin de générer une chaîne. J'essaie d'utiliser une syntaxe similaire à la fonction de jointure pour les listes. Voici ma tentative:
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(", ")
Cependant, j'obtiens cette erreur: AttributeError: 'set' object has no attribute 'join'
Quel est l'appel équivalent pour les sets?
', '.join(set_3)
join
est une méthode de chaîne, pas une méthode de jeu.
Les ensembles n'ont pas de méthode join
mais vous pouvez utiliser str.join
à la place.
', '.join(set_3)
La méthode str.join
fonctionnera sur tout objet itérable, y compris les listes et les ensembles.
Remarque: soyez prudent lorsque vous utilisez ceci sur des ensembles contenant des entiers. vous devrez convertir les entiers en chaînes avant l'appel à rejoindre. Par exemple
set_4 = {1, 2}
', '.join(str(s) for s in set_4)
La join
est appelée sur la chaîne:
print ", ".join(set_3)
Les ensembles n’ont pas d’ordre - de sorte que vous pouvez perdre votre ordre lorsque vous convertissez votre liste en un ensemble, c’est-à-dire:
>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')
En règle générale, la commande reste, mais pour les grands ensembles, elle ne le fera presque certainement pas.
Enfin, juste au cas où les gens se demandent, vous n'avez pas besoin d'un ',' dans la jointure.
Juste: '' .join (set)
:)
Ni la set
ni la list
n'a une telle méthode join
, string l'a:
','.join(set(['a','b','c']))
En passant, vous ne devriez pas utiliser name list
pour vos variables. Donnez-lui un list_
, my_list
ou un autre nom car list
est une fonction python très souvent utilisée.
Je pense que vous avez juste à l'envers.
print ", ".join(set_3)
Vous avez la déclaration de jointure à l'envers essayez:
print ', '.join(set_3)
J'ai écrit une méthode qui gère les cas Edge suivants:
", ".join({'abc'})
retournera "a, b, c"
. Ma sortie désirée était "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))