Hoe sorteer ik een set in python?

Ik probeer een set in python te sorteren door er elementen aan toe te voegen. Ik heb geprobeerd de methode gesorteerd() te gebruiken, maar deze zet mijn set om in een lijst. Ik moet mijn elementen sorteren en het zelf als een set afdrukken. Hoe kan ik dat doen?

Ik heb geprobeerd de methode gesorteerd() te gebruiken en kreeg een lijst. Geprobeerd om de lijst in een set te zetten. Maar kreeg niet het vereiste resultaat

a={}
a=set()
a.add(1)
a.add(-1)
a.add(0)
a.add(4)
a.add(-3)
print(a)

Verwacht resultaat:
{ -3, -1, 0, 1, 4}
Werkelijke resultaat:
{0, 1, 4, -3, -1}


Antwoord 1, autoriteit 100%

Je kunt niet

Lees gewoon python-documentatie:

Python bevat ook een gegevenstype voor sets. Een set is een ongeordende verzameling zonder dubbele elementen. Basisgebruik omvat het testen van lidmaatschap en het elimineren van dubbele vermeldingen. Set-objecten ondersteunen ook wiskundige bewerkingen zoals unie, intersectie, verschil en symmetrisch verschil.

Nadruk van mij.

Dat betekent dat je nooit items in een set kunt sorteren*.

Tenminste, met “normale” sets kan dat niet. U kunt beter zoeken naar bibliotheken van derden (zowel standaardwoordenboeken als collections.OrderedDict), omdat ik niet denk dat python geordende sets heeft ingebouwd, althans niet in collections.

* Nou, niet Nooit , ik heb begrepen dat vroege versies van Python de woordenboeken niet hebben besteld, en nu hebben ze. Maar tenminste in de huidige versie (Python 3.7), zijn er geen bestelde sets.

Hoe dan ook, Woordenboeken werken op een vergelijkbare manier om in te stellen. In een woordenboek kun je niet twee keer dezelfde sleutel hebben, zoals in een set die je niet twee keer hetzelfde item hebt. Dus als u werkt met de sleutels van een woordenboek en de waarden van die toetsen, een collections.OrderedDictnegeert, kan voor u werken. Zelfs basiswoordenboeken (degenen die u maakt met dict()) WERKEN SINDS PYTHON 3.7.

>>> a = dict()
>>> a[1] = None
>>> a[-1] = None
>>> a[0] = None
>>> a[4] = None
>>> a[-3] = None
>>> print(a.keys())
dict_keys([1, -1, 0, 4, -3])

Other episodes