@@ -139,7 +139,7 @@ class _ListMap(list[_T]):
139139
140140    """ 
141141
142-     def  __init__ (self , __iterable : Union [Iterable [ _T ], Mapping [ str ,  _T ]] =  None ):
142+     def  __init__ (self , __iterable : Union [Mapping [ str ,  _T ], Iterable [ _T ]] =  None ):
143143        if  isinstance (__iterable , Mapping ):
144144            # super inits list with values 
145145            if  any (not  isinstance (x , str ) for  x  in  __iterable ):
@@ -268,15 +268,18 @@ def __contains__(self, item: Union[_T, str]) -> bool:
268268
269269    def  __delitem__ (self , key : Union [int , slice , str ]) ->  None :
270270        if  isinstance (key , (int , slice )):
271-             loggers  =  list .__getitem__ (self , key )
272-             super (list , self ).__delitem__ (key )
273-             for  logger  in  loggers  if  isinstance (key , slice ) else  [loggers ]:
274-                 name  =  getattr (logger , "name" , None )
275-                 if  name :
276-                     self ._dict .pop (name , None )
271+             list .__delitem__ (self , key )
272+             for  _key  in  key .indices (len (self )) if  isinstance (key , slice ) else  [key ]:
273+                 # update indices in the dict 
274+                 for  str_key , idx  in  list (self ._dict .items ()):
275+                     if  idx  ==  _key :
276+                         self ._dict .pop (str_key )
277+                     elif  idx  >  _key :
278+                         self ._dict [str_key ] =  idx  -  1 
277279        elif  isinstance (key , str ):
278-             logger  =  self ._dict .pop (key )
279-             self .remove (logger )
280+             if  key  not  in   self ._dict :
281+                 raise  KeyError (f"Key '{ key }  ' not found." )
282+             self .__delitem__ (self ._dict [key ])
280283        else :
281284            raise  TypeError ("Key must be int or str" )
282285
0 commit comments