Eu tenho uma pergunta sobre expressões idiomáticas e legibilidade, e parece haver um conflito de filosofias Python para este caso específico:
Quero construir o dicionário A a partir do dicionário B. Se uma chave específica não existir em B, não faça nada e continue.
Qual caminho é melhor?
try:
A["blah"] = B["blah"]
except KeyError:
pass
ou
if "blah" in B:
A["blah"] = B["blah"]
"Faça e peça perdão" vs. "simplicidade e clareza".
Qual é melhor e por que?
A.update(B)
não funcionar para você?
has_key
tornou-se obsoleto em favor de in
e a verificação B.keys()
muda uma operação O (1) para uma O (n).
.has_key
está obsoleto e keys
cria uma lista desnecessária em py2k e é redundante em py3k
A = dict((k, v) for (k, v) in B if we_want_to_include(k))
.
if "blah" in B.keys()
, ouif B.has_key("blah")
.