0

我有一个按降序排序的字典。每个字符串(键)是一个术语,而 int(值)是它的计数。我如何获得第一个计数?因为它指的是最大计数(频率).......提前谢谢。

Just to inform some of whom commented that the dictionary<string,int> will change its
rank. Be sure, if you are grouping  the dictionary by its count, there is no problem  
with the order . Always the dictionary will come with highest count at first.
4

4 回答 4

6

“按降序排序的字典”是什么意思?ADictionary<TKey,TValue>根据定义是未排序的!你的意思是SortedDictionary<TKey,TValue>?如果是这样,您可以使用:

var firstCount = sortedDictionary.First().Value;
于 2012-05-08T11:07:02.920 回答
1

您不能依靠 aDictionary来保持有序(OrderedDictionary当然,除非它是 a)。如果您使用的是OrderedDictionary,则可以使用它的索引器:

var maximumCount = myDictionary[0];

或者

var maximumCount = myDictionary.First().Value;

编辑:如果你想要整个字典中的最高计数,你也可以使用这个:

var maximumCount = myDictionary.Max(entry => entry.Value);
于 2012-05-08T11:08:22.530 回答
0

我相信您使用了错误类型的字典。改用一个OrderedDictionary<>。它将为您提供有保证的订单和索引器。

OrderedDictionary list = new OrderedDictionary();

// add a bunch of items

int firstValue = (int)list[0];

OrderedDictionary 的唯一缺点是它不是通用的,但这里是如何使它通用的方法。 http://www.codeproject.com/Articles/18615/OrderedDictionary-TA-generic-implementation-of-IO

于 2012-05-08T11:10:38.693 回答
0

下面的呢

yourDictionary.First().Value

请记住,当您添加更多值时,它很可能会改变顺序

MSDN对此发出警告

http://msdn.microsoft.com/en-us/library/ekcfxy3x(v=vs.100).aspx

于 2012-05-08T11:07:29.287 回答