how to find position of dictionary values

Terry Reedy tjreedy at udel.edu
Mon Sep 1 21:08:30 CEST 2008



Alexandru Palade wrote:
 > lookfor = 'dfsdf'
 > for item, value in kev.items():
 >        if lookfor in value:
 >                print item
 >                print value.index(lookfor)
 >                break   # assuming you only want one result

slight variation:

lookfor = 'dfsdf'
for item, value in kev.items():
     for i, val in enumerate(value):
         if val == lookfor:
             print item, i
             break   # assuming you only want one result
else:
     print lookfor, 'not found'

This is what for-else is meant for.

If you want 0 to many lookfor occurences,

lookfor = 'dfsdf'
hits = []
for item, value in kev.items():
     for i, val in enumerate(value):
         if val == lookfor:
             hits.append((item, i))

print hits

One-liner fanatics would, of course, rewrite this as

hits = [(item, i) for item, value in kev.items() for i, val in 
enumerate(value) if val == lookfor]

Terry Jan Reedy



tjr




More information about the Python-list mailing list