Un diccionario es una colección de elementos donde cada elemento se compone de una clave y un valor, de manera que si se pasa una clave a un método del diccionario, se devuelve el valor asociado a ella. Cumple el mismo papel que 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"
Ten en cuenta que los tipos de la clave y del valor forman parte de la definición del diccionario.
Una vez construido, puedes agregar o eliminar entradas de un diccionario con sus métodos integrados Add y Remove.
Para obtener o actualizar valores en 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 un valor existe en el diccionario con:
var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true
Recorrer un diccionario enumera sus pares clave/valor. Los diccionarios también tienen propiedades que permiten recorrer 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 internacionales.
El diccionario usa un número entero para sus claves (el código de marcación) y un string (nombre del país) para sus valores.
Tienes 9 tareas que involucran 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 precargado que contiene los siguientes 3 códigos de marcación: «United States of America», con un código de 1; «Brazil», con un código de 55; y «India», con un código de 91. Implementa el método (estático) DialingCodes.GetExistingDictionary() para devolver el diccionario precargado:
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 agrega 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 agrega 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 verificar 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 reemplaza el nombre del país correspondiente en el diccionario con el nombre del país que se pasa como parámetro. Si el código de marcación no existe en el diccionario, el diccionario queda 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, código de marcación + 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.