Set Comprehension in python [duplicate]

2019-08-12 14:42发布

This question already has an answer here:

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

标签: python set
2条回答
唯我独甜
2楼-- · 2019-08-12 15:04

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.

查看更多
放荡不羁爱自由
3楼-- · 2019-08-12 15:24

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)))
查看更多
登录 后发表回答