Grundsätzlich versuche ich, die Einträge in einem Set zusammenzufügen, um einen String auszugeben. Ich versuche, eine Syntax ähnlich der Join-Funktion für Listen zu verwenden. Hier ist mein Versuch:
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(", ")
Ich erhalte jedoch diese Fehlermeldung: AttributeError: 'set' object has no attribute 'join'
Was ist der äquivalente Aufruf für Sets?
', '.join(set_3)
Die Variable join
ist eine Zeichenfolgenmethode und keine Mengenmethode.
Sets haben keine join
-Methode, Sie können stattdessen str.join
verwenden.
', '.join(set_3)
Die str.join
-Methode funktioniert für jedes iterierbare Objekt, einschließlich Listen und Sets.
Hinweis: Seien Sie vorsichtig bei der Verwendung von Mengen, die ganze Zahlen enthalten. Sie müssen die Ganzzahlen vor dem Aufruf zum Verknüpfen in Strings konvertieren. Zum Beispiel
set_4 = {1, 2}
', '.join(str(s) for s in set_4)
Die Variable join
wird in der Zeichenfolge aufgerufen:
print ", ".join(set_3)
Sets haben keine Bestellung - so dass Sie möglicherweise Ihre Bestellung verlieren, wenn Sie Ihre Liste in ein Set konvertieren, d. H .:
>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')
Im Allgemeinen bleibt die Reihenfolge erhalten, bei großen Sets jedoch mit ziemlicher Sicherheit nicht.
Schließlich, nur für den Fall, dass sich die Leute wundern, brauchen Sie kein ',' im Join.
Einfach: '' .join (set)
:)
Weder die set
noch die list
haben eine solche Methode join
.
','.join(set(['a','b','c']))
Übrigens sollten Sie nicht den Namen list
für Ihre Variablen verwenden. Vergeben Sie einen list_
, my_list
oder einen anderen Namen, da list
sehr häufig eine Python-Funktion verwendet.
Ich denke, du hast es einfach rückwärts.
print ", ".join(set_3)
Sie haben die Join-Anweisung rückwärts versucht:
print ', '.join(set_3)
Ich habe eine Methode geschrieben, die die folgenden Edge-Fälle behandelt:
", ".join({'abc'})
gibt "a, b, c"
zurück. Meine gewünschte Ausgabe war "abc"
.""
zurückgeben.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))