от
Мне часто приходится отсортировать словарь, состоящий из ключей

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.

9 Ответы

0 голосов
от
Мне часто приходится отсортировать словарь, состоящий из ключей
0 голосов
от
Использование:
using System.Linq.Enumerable;
...
List
0 голосов
от
Использовать LINQ:
Dictionary
0 голосов
от
var ordered = dict.OrderBy(x =
0 голосов
от
Оглядываясь вокруг, и, используя некоторые C# 3.0 характеристики мы можем сделать это:
foreach (KeyValuePair
0 голосов
от
Вы можете отсортировать Словарь по значению и сохранить его обратно к себе (так что, когда вы по каждому элементу за его значения в заказе):
dict = dict.OrderBy(x =
0 голосов
от
На высоком уровне, у вас нет другого выбора, то, чтобы пройти через весь словарь и посмотреть все значения. Может быть, это поможет: http://bytes.com/forum/thread563638.html Копирования/вставки из Джона Timney:
Dictionary
0 голосов
от
Вы никогда не смогли бы в словарь. Они не заказывали. Гарантии словарь, что ключ и коллекций стоимости повторяемое, и значения могут быть получены по индексу или ключу, но нет никакой гарантии, в каком-либо определенном порядке. Поэтому вы должны получить пару имя-значение в список.
0 голосов
от
Вы не сортировать записи в словаре. Класс словарь .Чистая реализован как хеш-таблица - это структура данных не поддерживает сортировку по определению. Если вы должны быть в состоянии перебрать свою коллекцию (с помощью ключа) - вам нужно использовать словаре sorteddictionary, который реализован как бинарное дерево поиска. В вашем случае, однако структура источник не имеет никакого значения, потому что он занимает по разных местах. Вам все равно нужно отсортировать его по частоте и положил его в новом сборнике отсортированы по соответствующей области (частоты). Поэтому в этой коллекции частот ключи и значения слова. Поскольку многие слова могут иметь одинаковую частоту (и вы собираетесь использовать его в качестве ключа) нельзя использовать ни в словаре, ни в словаре sorteddictionary (они требуют уникальных ключей). Это оставляет вас с объекта sortedlist. Я не понимаю, почему ты настаиваешь на поддержании ссылку на оригинал в свой главный/первый словарь. Если объекты в коллекции имеют более сложную структуру (несколько полей), и вы должны быть в состоянии эффективно открыть/сортировать их, используя несколько различных полей в качестве ключей - вы, вероятно, нужно пользовательскую структуру данных, которая будет состоять из основного хранилища, которое поддерживает за O(1) вставки и удаления (класса LinkedList) и несколько индексирование структур - словари/SortedDictionaries/SortedLists. Эти индексы будет использовать одно из полей ваш комплекс класса в качестве ключа и указатель/ссылку на LinkedListNode в LinkedList в качестве значения. Вам нужно будет координировать вставок и удалений, чтобы сохранить ваши показатели в синхронизации с основной коллекции (коллекции LinkedList) и абсорбции будет довольно дорого, я думаю. Это подобно тому, как индексы баз данных - они являются фантастическими для поиска, но они становятся обузой, когда нужно выполнить много insetions и удалений. Все вышесказанное оправдано только если вы собираетесь сделать некоторые выглядят-тяжелые обработки. Если вам нужен только выход сразу отсортировать их по частоте, то можно просто составить список (анонимно) кортежей:
var dict = new SortedDictionary
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...