Python-future: Reemplace lib2to3.fixes.fix_dict para evitar llamadas innecesarias a list ()

Creado en 8 sept. 2017  ·  4Comentarios  ·  Fuente: PythonCharmers/python-future

lib2to3.fixes.fix_dict básicamente ajustará cualquier llamada a dict.keys() , .values() o .items() en list() sin importar su contexto.

Sin embargo, por lo que puedo decir, las llamadas son más o menos inútiles cuando el resultado se itera directamente (por ejemplo, for k, v in d.items() ) o se verifica la contención (por ejemplo, if a in d.keys() ), lo que genera muchas diferencias. ruido para revertir.

Sería bueno si python-future tuviera su propio solucionador de iteraciones de dictados evitando esta molestia.

0.21 enhancement

Comentario más útil

La iteración de vistas al agregar o eliminar entradas en el diccionario puede generar un RuntimeError o fallar al iterar sobre todas las entradas.

Si el interior del bucle for agrega o elimina entradas, entonces se necesita list()

Todos 4 comentarios

La iteración de vistas al agregar o eliminar entradas en el diccionario puede generar un RuntimeError o fallar al iterar sobre todas las entradas.

Si el interior del bucle for agrega o elimina entradas, entonces se necesita list()

He escrito mi propio " fix_dict_methods " que hace esto:

"""Fixer for some dict methods.

Imports these compatibility methods from `future.utils`.

d.iterkeys() -> iterkeys(d)
d.iteritems() -> iteritems(d)
d.itervalues() -> itervalues(d)

d.viewkeys() -> viewkeys(d)
d.viewitems() -> viewitems(d)
d.viewvalues() -> viewvalues(d)
"""

Debería ser más seguro para el código PY2 que se está futurizando poco a poco paso a paso.

Tampoco envuelve ninguna de las llamadas simples .keys/values/items() en list() , ya que aún no he encontrado muchos lugares en los que necesitemos esa solución, pero podría seguir con esto como un paso separado - Creo que puedo ejecutar el fix_dict normal si necesito ese cambio.

Avísame si hay interés en esta variante de fix_dict . También estoy dispuesta a cambiar su nombre. (¿Quizás fix_dict_methods_with_import ?)

Hola @rdrey , estoy interesado en esta variante. Suena como una buena idea ejecutarlo antes del fix_dict normal, especialmente si el código base siempre llama a la versión iter cuando solo necesita un iterador.

¿Te importaría compartirlo?

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

wagnerpeer picture wagnerpeer  ·  12Comentarios

sriram-mv picture sriram-mv  ·  14Comentarios

wimglenn picture wimglenn  ·  5Comentarios

e-rk picture e-rk  ·  14Comentarios

foreignmeloman picture foreignmeloman  ·  3Comentarios