tengo un código que se ve algo como esto:Crear un diccionario de Python que contiene pares de valores clave específicas de otro diccionario
d = {'foo': True, 'bar': 42, 'baz': '!'}
a = {'foo': d['foo'], 'bar': d['bar']}
b = {'foo': d['foo'], 'baz': d['baz']}
c = {'bar': d['bar'], 'baz': d['baz']}
Sin duda, hay una mejor manera de expresar esto. De hecho, me leí los documentos con la esperanza de que el método de un diccionario copy
acepta claves que deben incluirse en el nuevo diccionario:
# I'd hoped that something like this would work...
a = d.copy('foo', 'bar')
b = d.copy('foo', 'baz')
c = d.copy('bar', 'baz')
podría escribir una función para este propósito:
copydict = lambda dct, *keys: {key: dct[key] for key in keys}
a = copydict(d, 'foo', 'bar')
b = copydict(d, 'foo', 'baz')
c = copydict(d, 'bar', 'baz')
¿Hay una mejor solución que la anterior?
¿Por qué no utiliza una lista (o un conjunto) para a, b, c? Mire en frío el valor en d cuando lo necesite. – maxy
En realidad estoy pasando 'a',' b', y 'c' a la función' urlencode' de Django (que, como 'urllib.urlencode', acepta un diccionario). – davidchambers
@BlaXpirit: debe escribir una respuesta que contenga solo "No." (rellene el tamaño mínimo con un comentario en HTML) para que todos podamos votarlo alocadamente. –