Grundsätzlich versuche ich, die Einträge in einem Satz zusammenzufügen, um eine Zeichenfolge auszugeben. Ich versuche, eine Syntax zu verwenden, die der Join-Funktion für Listen ähnelt. 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 diesen Fehler: AttributeError: 'set' object has no attribute 'join'
Was ist der entsprechende Aufruf für Mengen?
python
list
set
python-2.7
Spencer
quelle
quelle
', '.join(str(s) for s in set_3)
Sets haben keine
join
Methode, können aberstr.join
stattdessen verwendet werden.', '.join(set_3)
Die
str.join
Methode funktioniert für alle iterierbaren Objekte, einschließlich Listen und Mengen.Hinweis: Seien Sie vorsichtig, wenn Sie dies für Mengen verwenden, die Ganzzahlen enthalten. Sie müssen die Ganzzahlen vor dem Aufruf zum Beitritt in Zeichenfolgen konvertieren. Zum Beispiel
set_4 = {1, 2} ', '.join(str(s) for s in set_4)
quelle
Das
join
wird auf der Zeichenfolge aufgerufen:print ", ".join(set_3)
quelle
Weder das
set
noch daslist
hat eine solche Methodejoin
, der String hat es:','.join(set(['a','b','c']))
Übrigens sollten Sie
list
für Ihre Variablen keinen Namen verwenden . Geben Sie ihm einenlist_
,my_list
oder einen anderen Namen , weillist
sehr oft Python - Funktion verwendet wird.quelle
Set haben Sie nicht einen Auftrag - so Sie können Ihre Bestellung verlieren , wenn Sie Ihre Liste in einen Satz zu konvertieren, das heißt:
>>> orderedVars = ['0', '1', '2', '3'] >>> setVars = set(orderedVars) >>> print setVars ('4', '2', '3', '1')
Im Allgemeinen bleibt die Reihenfolge bestehen, bei großen Sets jedoch mit ziemlicher Sicherheit nicht.
Nur für den Fall, dass sich die Leute fragen, brauchen Sie kein ',' im Join.
Nur: '' .join (set)
:) :)
quelle
Ich denke du hast es einfach rückwärts.
print ", ".join(set_3)
quelle
print(", ".join(set_3))
Sie haben die Join-Anweisung rückwärts versucht:
print ', '.join(set_3)
quelle
Ich habe eine Methode geschrieben, die die folgenden Randfälle behandelt:
", ".join({'abc'})
wird zurückkehren"a, b, c"
. Meine gewünschte Ausgabe war"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))
quelle
" ".join({'abc'})
, um das gewünschte O / P zu erhalten"abc"
. ausführbarer Code in repl.it"".join(set(ip_data))
gibt eine zufällige Reihenfolge der Buchstaben an (Beispiel 'bca'), da set drei Elemente {'a', 'b', 'c'} erstellt, aber die Reihenfolge nicht beibehält.