如何检索字典中的第 N 项?

发布于 2024-11-16 01:29:46 字数 815 浏览 3 评论 0原文

可能的重复:
如何从字典中获取第 n 个元素?< /a>

如果有一个 Dictionary 总共有 Y 个项目,当 N N 时我们需要第 N 个项目。 Y 那么如何实现呢?

示例:

Dictionary<int, string> items = new Dictionary<int, string>();

items.add(2, "Bob");
items.add(5, "Joe");
items.add(9, "Eve");

// We have 3 items in the dictionary.
// How to retrieve the second one without knowing the Key?

string item = GetNthItem(items, 2);

如何编写GetNthItem()

Possible Duplicate:
How do I get the nth element from a Dictionary?

If there's a Dictionary with total of Y items and we need Nth item when N < Y then how to achieve this?

Example:

Dictionary<int, string> items = new Dictionary<int, string>();

items.add(2, "Bob");
items.add(5, "Joe");
items.add(9, "Eve");

// We have 3 items in the dictionary.
// How to retrieve the second one without knowing the Key?

string item = GetNthItem(items, 2);

How to write GetNthItem()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

鲜肉鲜肉永远不皱 2024-11-23 01:29:46

字典不会没有任何内在的顺序,所以实际上不存在第 N 项这样的概念:

出于枚举目的,每个
字典中的项目被视为
KeyValuePair 结构
代表一个值及其键。这
退回物品的顺序
未定义。

,如果您只想立即在位置 N 任意碰巧找到该项目,那么您可以使用 ElementAt:(

string item = items.ElementAt(2).Value;

请注意,不能保证在同一位置找到相同的项目如果你运行相同的代码再次,或者即使您快速连续调用 ElementAt 两次。)

A Dictionary<K,V> doesn't have any intrinsic ordering, so there's really no such concept as the Nth item:

For purposes of enumeration, each
item in the dictionary is treated as a
KeyValuePair<TKey, TValue> structure
representing a value and its key. The
order in which the items are returned
is undefined.

Having said that, if you just want the item that arbitrarily happens to be found at position N right now then you could use ElementAt:

string item = items.ElementAt(2).Value;

(Note that there's no guarantee that the same item will be found in the same position if you run the same code again, or even if you call ElementAt twice in quick succession.)

执笔绘流年 2024-11-23 01:29:46

字典未排序。没有第 n 项。

使用 OrderedDictionary 和 Item()

Dictionary isn't ordered. There is no nth item.

Use OrderedDictionary and Item()

∞琼窗梦回ˉ 2024-11-23 01:29:46

使用 LINQ:

Dictionary<int, string> items = new Dictionary<int, string>();

items.add(2, "Bob");
items.add(5, "Joe");
items.add(9, "Eve");

string item = items.Items.Skip(1).First();

您可能希望使用 FirstOrDefault 而不是 First,具体取决于您对数据的了解程度。

另外,请注意,虽然字典确实需要对其项目进行排序(否则它将无法迭代它们),但该排序是一个简单的 FIFO(它不可能是其他任何东西,因为 IDictionary< /code> 不要求您的项目是 IComparable)。

Using LINQ:

Dictionary<int, string> items = new Dictionary<int, string>();

items.add(2, "Bob");
items.add(5, "Joe");
items.add(9, "Eve");

string item = items.Items.Skip(1).First();

You might want to use FirstOrDefault instead of First, depending on how much you know about your data.

Also, be aware that while dictionary does need an ordering for its items (otherwise it wouldn't be able to iterate over them), that ordering is a simple FIFO (it couldn't easily be anything else, since IDictionary does not require your items to be IComparable).

风筝有风,海豚有海 2024-11-23 01:29:46

string item = items[items.Keys[1]];

但是,请注意字典未排序。根据您的要求,您可以使用 SortedDictionary

string item = items[items.Keys[1]];

However, be aware that a dictionary isn't sorted. Depending on your requirements, you could use a SortedDictionary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文