code: def find_string_in_dict_or_list(i):
      
  
      d=i.get('dict',{})
  
      found='no'
  
      wc=False
      ss=i.get('search_string','')
      if ss.find('*')>=0 or ss.find('?')>=0:
         wc=True
         import fnmatch
  
      bic=False
      ic=i.get('ignore_case','')
      if ic=='yes': 
         bic=True
         ss=ss.lower()
  
      for q in d:
          if type(d)==dict:   v=d[q]
          elif type(d)==list: v=q
          else:               v=str(q)
  
          if type(v)==dict or type(v)==list:
             rx=find_string_in_dict_or_list({'dict':v, 'search_string':ss, 'ignore_case':ic})
             if rx['return']>0: return rx
             found=rx['found']
             if found=='yes':
                break
          else:
             try: v=str(v)
             except Exception as e: pass
  
             if bic: 
                v=v.lower()
  
             if (wc and fnmatch.fnmatch(v, ss)) or v==ss:
                found='yes'
                break
  
      return {'return':0, 'found':found}
docs: Input:  {
                dict            - dictionary 1
                (search_string) - search string
                (ignore_case)   - ignore case of letters
              }
  
      Output: {
                return       - return code =  0, if successful
                                           >  0, if error
                (error)      - error text if return > 0
  
                found        - if 'yes', string found
              }