09. Объединение конфигураций
Словарь Dictionary<TKey, TValue>
Что хранит. Хранит пары «ключ — значение». Ключи уникальны, значения могут повторяться. Ключ обозначает запись и не является её порядковым номером.
Для чего используют. Подходит для настроек, остатков товара, счётчиков посещений: значение нужно быстро находить по имени или идентификатору.
Основные операции
| Запись на C# | Назначение |
d[key] = value | Создать запись или заменить прежнее значение. |
d.Add(key, value) | Добавить только новый ключ; повторный ключ вызывает ошибку. |
d.TryGetValue(key, out value) | Проверить наличие и получить значение; возвращает true или false. |
d.ContainsKey(key) | Проверить наличие ключа. |
d.Remove(key) | Удалить запись; вернуть false, если ключа нет. |
d.Count | Количество ключей. |
d.Keys | Ключи для перебора; нужный порядок задавайте отдельно. |
Пример
Для примера нужны using System; и using System.Collections.Generic;. Код выполняется внутри Main.
Dictionary<string, int> stock = new Dictionary<string, int>();
stock["tea"] = 2;
stock["tea"] += 1; // Изменяем существующую запись.
int amount;
if (stock.TryGetValue("tea", out amount))
Console.WriteLine(amount);
Console.WriteLine(stock.ContainsKey("water"));
Вывод:
3
False
Важно. Чтение d[key] требует существующего ключа. Значение 0 и отсутствие записи — разные случаи. Не полагайтесь на порядок обхода словаря.
Для этой задачи
- Сортировка ключей. Создайте new List<string>(d.Keys), затем вызовите keys.Sort(StringComparer.Ordinal). Этот порядок соответствует условию.
Приложение объединяет настройки по умолчанию и пользовательские настройки. Если ключ есть в обоих наборах, используйте пользовательское значение. Остальные настройки тоже должны попасть в результат. Выведите итоговую конфигурацию в лексикографическом порядке ключей.
Входные данные
В первой строке записаны n и m. Далее идут n строк настроек по умолчанию, затем m строк пользовательских настроек. Каждая строка содержит key и value. Внутри каждого набора ключи уникальны.
Выходные данные
Сначала выведите число ключей в итоговой конфигурации. Затем для каждого ключа выведите строку key value. Ключи упорядочьте по буквам a, b, …, z; если один ключ является началом другого, более короткий идёт раньше. При отсутствии настроек выведите только 0.
Не выводите приглашения к вводу и пояснения. Служебные слова в ответах пишите в указанном регистре.
Ограничения
0 ≤ n, m ≤ 100000; ключ содержит 1–20 строчных латинских букв; значение от −10⁹ до 10⁹.
| № | Входные данные | Выходные данные |
|
1
|
3 2
volume 10
theme 1
scale 100
volume 20
brightness 80
|
4
brightness 80
scale 100
theme 1
volume 20
|
|
2
|
0 0
|
0
|
Напишите программу
Auto