+ 1
Dictionary
I wrote following code and the output was rearranged i.e. the arrangement of elements was not the same as given by me: dictn = {'1':1,'b':2,'3':3,'4':4} print(dictn) O/p: {'b': 2, '3': 3, '1': 1, '4': 4} Why?
9 Answers
+ 13
You can use the sorted function, then iterate back through it:
dict_a = {"a": 1, "b": 2, "c": 3}
print(dict_a)
print(sorted(dict_a))
for key in sorted(dict_a):
value = dict_a[key]
print(key, ":", value)
Also, you can search Google for "sorting python dictionaries".
+ 4
Python dictionaries are unordered. Therefore when you go to print them, the elements will not be in the order you see when you look at the code.
However, unordered does not mean there is no order. The order will remain the same for the life span of the object.
(Think of unordered as meaning it isn't a reliable order.)
This is because dictionaries are stored as a hash value, and the hash value never changes for the life span of the object.
If you need to print them in order, you could use tuples:
(('1', 1), ('b', 2), ('3', 3),('4', 4))
+ 3
@ James: You see a pattern, where there is none.
In primes[primes[4]] the innermost expression is evaluated first.
primes[4]=7, hence primes [primes[4]] = primes[7]=17.
Imagine dictionaries to be functions you define pointwise on a limited domain. They are not ordered, Martian's post explains what unordered means here.
+ 2
@Tobi OOOOOOOOH! Why is this so hard? okay okay.
so basically it's using a function's answer to recall another entry BASED on the first answer.
+ 1
In dictionaries, data is stored as a key|value pair. However, it is always sorted in a specific order, so key "5" will be stored after key "1", "c" will be stored after "b", etc.
You can't affect which key will be stored in which position
+ 1
data is not sorted, '3' is followed by '1' which is followed by '4'
+ 1
hi Dwight, i m not trying to sort the 'dictn' but trying to understand why the compiler has changed its order of elements while printing
+ 1
To piggyback off of this question: Lists are ordered 0 thru Whatever.
How how dictionaries ordered?
>>>primes = {1: 2, 2: 3, 4: 7, 7:17}
print(primes[primes[4]])
prints 17, apparently. So are dictionaries started at number 1 instead of 0 like a list?
0
dictionary is different from list, it is unordered. Think it as a bag carrying a number of paired things. Everytime, you pick something from the bag, it is random. List is more like a queue, things have their own orders.