Как я получаю энный элемент из Словаря?

Единственный способ сделать это (кроме гениальной идеи формы BalusC!) - добавить в кнопку событие JavaScript onclick, что не очень удобно для доступности.

Рассматривали ли вы стиль обычной ссылки, как кнопки? Вы не можете получить кнопки для конкретной ОС, но это лучший способ для ИМО.

34
задан ann 24 August 2015 в 08:06
поделиться

4 ответа

Проблема в том, что словарь не отсортирован. Вам нужен SortedList , который позволяет получать значения по индексу, а также по ключу, хотя вам может потребоваться указать собственный компаратор в конструкторе, чтобы получить желаемую сортировку. Затем вы можете получить доступ к упорядоченному списку ключей и значений и при необходимости использовать различные комбинации методов IndexOfKey / IndexOfValue.

34
ответ дан 27 November 2019 в 16:15
поделиться

вот так:

int n = 0;
int nthValue = cipher[cipher.Keys.ToList()[n]];

обратите внимание, что вам также понадобится ссылка на Linq вверху страницы ...

using System.Linq;
28
ответ дан 27 November 2019 в 16:15
поделиться

Просто чтобы придерживаться исходной спецификации Словаря, я вставил код и придумал:

Dictionary<string, string> d = new Dictionary<string, string>();

d.Add("a", "apple");
d.Add("b", "ball");
d.Add("c", "cat");
d.Add("d", "dog");

int t = 0;
foreach (string s in d.Values)
{
    t++;
    if (t == 2) Console.WriteLine(s);
}

, и похоже, что второй элемент («мяч») записывается в консоль с повторяемостью . Если вы обернули его в вызов метода для получения n-го элемента, он, вероятно, сработает. Хотя это довольно некрасиво. Если бы вы могли вместо этого сделать SortedList,

2
ответ дан 27 November 2019 в 16:15
поделиться

Вам действительно нужно искать ключ? Если нет, используйте List > (или еще лучше, создайте тип для инкапсуляции char и int).

Словари не сортируются по своей сути - реализации словаря которые отсортированы в .NET, сортируются по ключу, а не по порядку вставки.

Если вам нужно получить доступ к коллекции как по порядку вставки, так и по ключу, я бы рекомендовал инкапсулировать список и словарь в единственный тип коллекции.

В качестве альтернативы, если список будет довольно коротким, разрешите поиск по индексу, просто выполнив линейный поиск ...

17
ответ дан 27 November 2019 в 16:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: