1

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}?

0

2 Answers 2

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.

Sign up to request clarification or add additional context in comments.

Comments

5

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)))

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.