【问题标题】:Traversing through dictionary keys遍历字典键
【发布时间】:2014-10-15 01:09:36
【问题描述】:

有没有办法在字典中获取键的位置?

例如,如果我的键是 23、44、56、66,并且我希望获取位置 0 的键,它将返回 23。或者位置 2 的键将返回 56。

字典键可以这样遍历吗?

【问题讨论】:

  • 你到底是什么意思?所以你想搜索字典并找出字典中的值在哪里?
  • 我正在尝试从字典中选择一个随机键。只是关键而不是价值
  • 你为什么要这样做?
  • 它是一个像这样的字典Dictionary <int, List <int>> 我想从所有的键中选择一个随机整数。

标签: c# dictionary unity3d


【解决方案1】:

所以是的,字典能够被迭代,因为它们是 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 没有指定顺序。
【解决方案2】:

来自MSDN

出于枚举的目的,字典中的每个项目都被视为 一个 KeyValuePair 结构,表示一个值及其 钥匙。返回项目的顺序未定义。

因此,如果您确实得到了索引,则索引将不一致。

如果可以的话,我建议你使用List<T> 或类之类的List<T>

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 2021-11-23
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    相关资源
    最近更新 更多