Есть ли способ получить местоположение ключа в словаре?Перемещение по клавишам словаря
, например, если мои ключи 23, 44, 56, 66 и я хочу ГЭТ они ключ на месте 0 было бы вернуть мне 23. Или ключ на месте 2 вернутся 56.
Are словарные ключи как это?
Есть ли способ получить местоположение ключа в словаре?Перемещение по клавишам словаря
, например, если мои ключи 23, 44, 56, 66 и я хочу ГЭТ они ключ на месте 0 было бы вернуть мне 23. Или ключ на месте 2 вернутся 56.
Are словарные ключи как это?
От MSDN:
Для целей перечисления, каждый элемент в словаре трактуются как структуру KeyValuePair, представляющих значение и его ключа. Порядок, в котором возвращаются элементы, не определен.
Таким образом, индексы не будут согласованы, если когда-либо вы его получите.
Я предлагаю вам использовать List<T>
, используя что-то вроде KeyValuePair<TKey,TValue>
или класса, если можете.
Так что словаря слова можно перебирать, потому что это тип ICollection.
Если вы действительно хотите, чтобы просто найти случайный ключ, который вы могли бы просто создать случайное число и использовать
var randomNumber = 5; (or however you want to get a random number)
var randomKey = yourDictionary.ElementAt(randomNumber).Key;
Так что это будет получить ключ в шестой позиции словаря, и если вы хотите, вы могли бы также получите значение, просто сказав .Value;
Хммм, я пробовал ElementAt, но по некоторым причинам он не работает в Unity3d. Это может быть метод расширения, недоступный для меня в Unity. Но да, это именно то, что я ищу, за исключением того, что он не работает. –
Другое, поместив все ключи в массив и выбрав индекс этого массива, я не уверен, может ли быть более простой способ (в Unity). –
Обратите внимание, что словарь является неупорядоченной коллекцией, поэтому в любом словаре нет шестой позиции! ICollection не указывает порядок. – Tyress
Что именно вы имеете в виду? Итак, вы хотите найти словарь и узнать, где значение находится внутри словаря? –
Я пытаюсь выбрать случайный ключ из словаря. Только ключ, а не значение –
Почему вы хотите это сделать? – Enigmativity