Which is the best approach for searching the dictionary items?
None of the above.


  OR if there is any other approach you would recommend please let me
  know.


The whole point of using dictionaries is that you don't need to search anything and can access everything in O(1) (on average) instead of the O(n) in all of your suggestions.


  
  names are unique in the list
  There will be definitely a name in each dictionary.
  


So, instead of using a list of dictionaries, use a dictionary of dictionaries using the name as the outer key.

Instead of

items = [{'name': 'a', 'age': 22, ...},
         {'name': 'b', 'age': 30, ...}]


you should have

items = {'a': {'age': 22, ...},
         'b': {'age': 30, ...}}


Now you can access each dictionary directly by using the name.

name = 'b'
print(items[name]['age'])
#  30


No loops, no searches, O(1) access.