How to iterate over case-insensitive, sorted dictionaries?

Example:

>>> d = {'answer':1, 'Question':2} >>> for i, j in sorted(d.items()): print i Question answer 

I need case insensitive case:

 answer Question 

and I believe that this can be done in a simple Putin way.

+4
source share
3 answers

If it just prints the keys:

 for i in sorted(d.keys(), key=lambda x: x.lower()): print i 

If you need values ​​after this, you can do

 for i, j in sorted(d.items(), key=lambda x: x[0].lower()): print i, j 

EDIT: even shorter and better (since you have d in scope):

 for i in sorted(d, key=str.lower): print i, d[i] 
+6
source
 import string sorted(d.items(), key=string.lower) 
+3
source
 for k in sorted(d, key=lambda k: k.lower()): print k 
+2
source

Source: https://habr.com/ru/post/1379262/


All Articles