Tengo una pregunta sobre modismos y legibilidad, y parece haber un choque de filosofías de Python para este caso particular:
Quiero crear el diccionario A a partir del diccionario B. Si una clave específica no existe en B, no haga nada y continúe.
¿Cuál es mejor?
try:
A["blah"] = B["blah"]
except KeyError:
pass
o
if "blah" in B:
A["blah"] = B["blah"]
"Hacer y pedir perdón" versus "sencillez y explicidad".
¿Cuál es mejor y por qué?
fuente
if "blah" in B.keys()
, oif B.has_key("blah")
.A.update(B)
no funcionar para usted?has_key
se ha desaprobado a favor dein
y la verificaciónB.keys()
cambia una operación O (1) a una O (n)..has_key
está en desuso ykeys
crea una lista innecesaria en py2k, y es redundante en py3kA = dict((k, v) for (k, v) in B if we_want_to_include(k))
.