Un diccionario es una colección de elementos en la que cada elemento consta de una clave y un valor, de modo que si se pasa una clave a un método del diccionario, se devuelve el valor asociado. Tiene el mismo papel que cumplen los mapas o los arrays asociativos en otros lenguajes.
Un diccionario se puede crear así:
new Dictionary<int, string>();
// Empty dictionary
O
new Dictionary<int, string>
{
[1] = "One",
[2] = "Two"
};
// Or
new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// 1 => "One", 2 => "Two"
Fíjate en que los tipos de la clave y del valor forman parte de la definición del diccionario.
Una vez construido, se pueden añadir o eliminar entradas de un diccionario con sus métodos integrados Add y Remove.
Para obtener o actualizar valores de un diccionario, se indexa el diccionario con una clave:
var numbers = new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// Set the value of the element with key 2 to "Deux"
numbers[2] = "Deux";
// Get the value of the element with key 2
numbers[2];
// => "Deux"
Puedes comprobar si existe un valor en el diccionario con:
var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true
Enumerar un diccionario recorre sus pares clave/valor. Los diccionarios también tienen propiedades que permiten enumerar sus claves o sus valores.
En este ejercicio vas a escribir código para llevar un registro de los códigos de marcación internacionales mediante un diccionario de códigos de marcación internacional.
El diccionario usa un número entero para sus claves (el código de marcación) y un string (el nombre del país) para sus valores.
Tienes 9 tareas que implican la clase estática DialingCodes.
Implementa el método (estático) DialingCodes.GetEmptyDictionary(), que devuelve un diccionario vacío.
DialingCodes.GetEmptyDictionary();
// => empty dictionary
Existe un diccionario ya rellenado que contiene los siguientes 3 códigos de marcación: «United States of America», con el código 1; «Brazil», con el código 55, e «India», con el código 91. Implementa el método (estático) DialingCodes.GetExistingDictionary() para que devuelva el diccionario ya rellenado:
DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"
Implementa el método (estático) DialingCodes.AddCountryToEmptyDictionary(), que crea un diccionario y le añade un código de marcación y el nombre del país asociado.
DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"
Implementa el método (estático) DialingCodes.AddCountryToExistingDictionary(), que añade un código de marcación y el nombre del país asociado a un diccionario que no está vacío.
DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"
Implementa el método (estático) DialingCodes.GetCountryNameFromDictionary(), que recibe un código de marcación y devuelve el nombre del país correspondiente. Si el código de marcación no está en el diccionario, se devuelve un string vacío.
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 999);
// => string.Empty
Implementa el método (estático) DialingCodes.CheckCodeExists() para comprobar si un código de marcación existe en el diccionario.
DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true
Implementa el método (estático) DialingCodes.UpdateDictionary(), que recibe un código de marcación y sustituye el nombre del país correspondiente en el diccionario por el nombre del país que se pasa como parámetro. Si el código de marcación no existe en el diccionario, este permanece sin cambios.
DialingCodes.UpdateDictionary(
DialingCodes.GetExistingDictionary(), 1, "Les États-Unis");
// => 1 => "Les États-Unis", 55 => "Brazil", 91 => "India"
DialingCodes.UpdateDictionary(
DialingCodes.GetExistingDictionary(), 999, "Newlands");
// 1 => "United States of America", 55 => "Brazil", 91 => "India"
Implementa el método (estático) DialingCodes.RemoveCountryFromDictionary(), que recibe un código de marcación y elimina del diccionario el registro correspondiente, es decir, el código de marcación y el nombre del país.
DialingCodes.RemoveCountryFromDictionary(
DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"
Implementa el método (estático) DialingCodes.FindLongestCountryName(), que devolverá el nombre del país con el nombre más largo almacenado en el diccionario.
DialingCodes.FindLongestCountryName(
DialingCodes.GetExistingDictionary());
// => "United States of America"
Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.