On 06/02/2015 01:20 PM, fl wrote:
Hi,

I try to learn sorted(). With the tutorial example:




ff=sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
ff
[1, 2, 3, 4, 5]



I don't see what sorted does in this dictionary, i.e. the sequence of
1..5 is unchanged. Could you explain it to me?


Thanks,

It's best to think of dictionaries as unordered collections of key/value pairs. Dictionaries are not sequences, do not have any particular ordering, and in full generality *can't* be sorted in any sensible way.

For instance, this slightly odd (but perfectly legal) dictionary
    >>> d = {'a':123, 456:'b'}
can't be sorted
    >>> sorted(d)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unorderable types: int() < str()
because it doesn't make sense to order/compare the two keys 'a' and 456.

If your dictionary is a little better behaved, say
    >>> d = {'a':123, 'b':456}
you may be able to sort the keys
    >>> sorted(d)
    ['a', 'b']
or the values
    >>> sorted(d.values())
    [123, 456]
or the key/value tuples (called items)
    >>> sorted(d.items())
    [('a', 123), ('b', 456)]
but each of those attempts to sort could fail on a general dictionary if the individual keys or values are not sortable.

There is also an implementation of a type of dictionary that remembers the order in which the items are *inserted*. It's in the collections module and called OrderedDict.


Gary Herron






--
Dr. Gary Herron
Department of Computer Science
DigiPen Institute of Technology
(425) 895-4418

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to