This question already has an answer here:
-
Converting a list to a set changes element order
8 answers
-
Does Python have an ordered set?
12 answers
In Python3 I wrote a simple one line code as follows :
{ 2*x for x in {1,2,3,4} }
but I m getting answer like this (order changed).
{8, 2, 4, 6}
Why I am getting answer {8,2,4,6}
instead of {2,4,6,8}
?
That's because sets don't have any order. They're unordered collection.
help on set
:
Build an unordered collection of unique elements.
If you want the order to be preserved then you can use list
, tuple
or collections.OrderedDict
here.
Because a set has no fixed order. Quoting the set documentation:
A set object is an unordered collection of distinct hashable objects.
Use a list or tuple if you require ordering, or use an OrderedDict()
object to create unique keys that preserve ordering:
from collections import OrderedDict
ordered_unique_values = list(OrderedDict.fromkeys(2*x for x in (1,2,3,4)))