SortedDictionary или сортированные значения [РЕШЕНО]

Программирование на Юнити.

SortedDictionary или сортированные значения [РЕШЕНО]

Сообщение greatPretender 01 июл 2017, 18:12

Вечер бодрый. Подскажите, пожалуйста, нужен что-то типо сортированный словарь.
Т.е.
ДАНО:
словарь dict <int, int> = <<21, 128>, <32, 72>, <31, 206>, <11, 107>, <43, 292>>
в нём ключи никогда не повторяются, а значения могут совпадать.

НУЖНО: отсортировать Ключи по мере возрастания Значений.
Т.е. сортируем значения по возрастанию и получаем упорядоченную последовательность ключей в соотв-ии с так раставленными значениями.
Т.е. должно получиться так:
словарь dict <int, int> = <<32, 72>, <11, 107>, <21, 128>, <31, 206>, <43, 292>>
Просто нужно найти не ОДИН ключ с наименьшим значением, а иметь список ключей по возрастанию значений, чтобы ко всем ключам потом обращаться.
Думал SortedDict , но понять не могу, как мне из него получить первый ключ в результате этой сортировки, а потом последующий и т.д. К нему разве можно обращаться как к списку, т.е. получить 1-ый элемент(взять только ключ, значение не надо), 2-ой и т.д.?
Сортировать отдельно List из значений - НЕ вариант, т.к. если значения совпадут у разных ключей, то я не смогу потом понять идент-ть ключ по таким значениям.
Последний раз редактировалось greatPretender 02 июл 2017, 14:24, всего редактировалось 1 раз.
greatPretender
Старожил
 
Сообщения: 526
Зарегистрирован: 23 сен 2015, 07:51

Re: SortedDictionary или сортированные значения

Сообщение samana 01 июл 2017, 18:35

greatPretender писал(а):НУЖНО: отсортировать Ключи по мере возрастания Значений.

Синтаксис:
Используется csharp
using System.Linq;
dic = dic.OrderBy(x => x.Value).ToDictionary(x => x.Key, y => y.Value);
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: SortedDictionary или сортированные значения

Сообщение greatPretender 01 июл 2017, 18:38

И как теперь получить ключ с наименьшим значением, и следующий ключ со "вторым" наименьшим и так далее?
greatPretender
Старожил
 
Сообщения: 526
Зарегистрирован: 23 сен 2015, 07:51

Re: SortedDictionary или сортированные значения

Сообщение samana 01 июл 2017, 18:49

Просто пробежать foreach-ем и получите значения от начала до конца.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: SortedDictionary или сортированные значения

Сообщение greatPretender 01 июл 2017, 18:53

Буду пробовать. Ок, Спасибо.)
greatPretender
Старожил
 
Сообщения: 526
Зарегистрирован: 23 сен 2015, 07:51

Re: SortedDictionary или сортированные значения

Сообщение greatPretender 07 июл 2017, 11:35

samana писал(а):Просто пробежать foreach-ем и получите значения от начала до конца.

Сейчас пробую, но через foreach что-то не получается. Не понятно как в коде понимать 2-ое, 3-ее или какое я перебираю значение в рез-те сортирвки.
Я пробую через for перебирать. Пара вопросов есть, проверить в дебаге пока не могу , а в документации типо prof...web слишком абстрактно написано.
Обращаться нужно с i=0 или =1?
А если через for , то в результате этой сортировки первое запрошенное значение будет минимальным? А второе тогда следующее по возрастанию?
greatPretender
Старожил
 
Сообщения: 526
Зарегистрирован: 23 сен 2015, 07:51

Re: SortedDictionary или сортированные значения [РЕШЕНО]

Сообщение samana 07 июл 2017, 12:00

У обычного словаря нет индексов, поэтому цикл for здесь бесполезен, либо я не знаю как это сделать через for.

greatPretender писал(а):Сейчас пробую, но через foreach что-то не получается. Не понятно как в коде понимать 2-ое, 3-ее или какое я перебираю значение в рез-те сортирвки.

Просто после сортировки, когда вы запускаете foreach он переберёт все элементы от начала до конца, но так как эти элементы были упорядочены по возрастанию значения, то ваш перебор и будет от меньшего (Value) до большего.

Немного не понимаю, зачем вам индекс в словаре? Может вам не ограничиваться только словарём, но и создать дополнительные массивы, которые будут хранить отдельно ключи и значения из этого словаря?
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: SortedDictionary или сортированные значения [РЕШЕНО]

Сообщение greatPretender 07 июл 2017, 20:24

samana писал(а):У обычного словаря нет индексов, поэтому цикл for здесь бесполезен, либо я не знаю как это сделать через for.

Просто после сортировки, когда вы запускаете foreach он переберёт все элементы от начала до конца, но так как эти элементы были упорядочены по возрастанию значения, то ваш перебор и будет от меньшего (Value) до большего.

Ааа, вот это мне и нужно, а именно, что после сортировки , в цикле foreach уже начинает перебор с наименьшего значения. Я для этого и дмал как бы ввезти индексацию, т.к. по ключам я не могу ориентировать, поскольку в цикле foreach мне и нужно узнать сначала ключ самого наименьшего значения, потом ключ следующего значения по возрастанию, и т.д. Ладна индексацию я внутри foreach-а введу искусственно. Для меня главный вывод этот: "...что после сортировки , в цикле foreach уже начинает перебор с наименьшего значения. ...", а остальное я сделаю. Спасибо.)
greatPretender
Старожил
 
Сообщения: 526
Зарегистрирован: 23 сен 2015, 07:51


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4