PythonNewb
PythonNewb

Reputation: 121

How do I print a sorted Dictionary in Python 3.4.3

I am studying for my GCSE part of which requires me to print a dictionary sorted alphabetically by key and the print should include the associated value.

I have spent hours trying to find the answer to this and have looked at various posts on this forum but most are too complex for my limited knowledge.

I can print alphabeticallycsorted Keys and I can print sorted values but not alphabetically sorted keys with the values attached.

This is my simple test code

class1 = { 'Ethan':'9','Ian':'3','Helen':'8','Holly':'6' } # create dictionary

print(sorted(class1)) # prints sorted Keys
print(sorted(class1.values())) # Prints sorted values

I need to print sorted keys with values - how to do that?

for k,v in class1.items():
    print(k,v)  # prints out in the format I want but not alphabetically sorted

Upvotes: 10

Views: 27186

Answers (2)

heisenberg
heisenberg

Reputation: 23

class1 = { 'Ethan':'9','Ian':'3','Helen':'8','Holly':'6' }
class1_keys = class1.keys()
class1_keys.sort()
for i in class1_keys:
        print(i,class1[i])
Ethan 9
Helen 8
Holly 6
Ian 3

Upvotes: 0

Kevin
Kevin

Reputation: 76194

>>> class1 = { 'Ethan':'9','Ian':'3','Helen':'8','Holly':'6' }
>>> print(sorted(class1.items()))
[('Ethan', '9'), ('Helen', '8'), ('Holly', '6'), ('Ian', '3')]

 

>>> for k,v in sorted(class1.items()):
...     print(k, v)
...
Ethan 9
Helen 8
Holly 6
Ian 3

 

>>> for k,v in sorted(class1.items(), key=lambda p:p[1]):
...     print(k,v)
...
Ian 3
Holly 6
Helen 8
Ethan 9

>>> for k,v in sorted(class1.items(), key=lambda p:p[1], reverse=True):
...     print(k,v)
...
Ethan 9
Helen 8
Holly 6
Ian 3

Upvotes: 28

Related Questions