Un uso de Lookup
podría revertir un Dictionary
.
Supongamos que tiene una agenda telefónica implementada como Dictionary
con un grupo de nombres (únicos) como claves, cada nombre asociado con un número de teléfono. Pero dos personas con diferentes nombres pueden compartir el mismo número de teléfono. Esto no es un problema para un Dictionary
, que no le importa que dos claves correspondan al mismo valor.
Ahora quiere una forma de averiguar a quién pertenece un número de teléfono determinado. Crea un Lookup
, agregando todos los KeyValuePairs
desde su Dictionary
, pero al revés, con el valor como la clave y la clave como el valor. Ahora puede consultar un número de teléfono y obtener una lista de nombres de todas las personas cuyo número de teléfono es.La construcción de un Dictionary
con los mismos datos se reduciría de datos (o no, dependiendo de cómo lo hizo), ya que de
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
significa que la segunda entrada sobrescribe el primero - el Doc ya no está en la lista.
tratando de escribir los mismos datos de una manera ligeramente diferente:
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
podría lanzar una excepción en la segunda línea, ya no se puede Add
una clave que ya está en el Dictionary
.
[Por supuesto, es posible que desee utilizar alguna otra estructura de datos única de hacer búsquedas en ambas direcciones, etc. Este ejemplo significa que usted tiene que regenerar la Lookup
del Dictionary
cada vez que los últimos cambios. Pero para algunos datos podría ser la solución correcta.]
Creo que para hacer esta respuesta mejor podrías reemplazar algunos de los vars. Para fines de aprendizaje, creo que es más fácil de seguir, cuando los tipos se expresan claramente. Solo mis 2 centavos :) –
Si tiene lo mejor de ambos mundos, ¿por qué molestarse con un diccionario? –
@KyleBaran: Porque no tendría sentido para colecciones genuinas de pares clave/valor, donde solo hay un valor único por clave. –