¿Cómo obtienes los primeros 3 elementos en Python OrderedDict?

¿Cómo obtienes los primeros 3 elementos en Python OrderedDict?

También es posible eliminar datos de este diccionario.

Por ejemplo: ¿Cómo obtendré los primeros 3 elementos en Python OrderedDict y eliminaré el rest de los elementos?

Vamos a crear un simple OrderedDict :

 >>> from collections import OrderedDict >>> od = OrderedDict(enumerate("abcdefg")) >>> od OrderedDict([(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g')]) 

Para devolver las tres primeras claves , valores o elementos respectivamente:

 >>> list(od)[:3] [0, 1, 2] >>> list(od.values())[:3] ['a', 'b', 'c'] >>> list(od.items())[:3] [(0, 'a'), (1, 'b'), (2, 'c')] 

Para eliminar todo excepto los tres primeros elementos:

 >>> while len(od) > 3: ... od.popitem() ... (6, 'g') (5, 'f') (4, 'e') (3, 'd') >>> od OrderedDict([(0, 'a'), (1, 'b'), (2, 'c')]) 

Puede utilizar este método iterativo para realizar el trabajo.

 x = 0 for i in ordered_dict: if x > 3: del ordered_dict[i] x += 1 

Primero, ordered_dict una variable de contador, x , y la asignas a 0. Luego, ordered_dict las teclas en ordered_dict . Verá cuántos elementos se han verificado al ver que x es mayor que 3, que es el número de valores que desea. Si ya se han comprobado 3 elementos, se debe a ese elemento en ordered_dict .


Aquí hay un método alternativo más limpio (gracias a los comentarios).

 for i, k in enumerate(ordered_dict): if i > 2: del ordered_dict[k] 

Esto funciona al usar enumerar para asignar un número a cada tecla. Luego verifica si ese número es menor que dos (0, 1 o 2). Si el número no es 0, 1 o 2 (estos serán los primeros tres elementos), entonces ese elemento en el diccionario se eliminará.

No es diferente de otros dictados:

 d = OrderedDict({ x: x for x in range(10) }) i = d.iteritems() a = next(i) b = next(i) c = next(i) d = OrderedDict([a,b,c]) # or d.clear() d.update([a,b,c])