gpt4 book ai didi

c# - 将数组转换为字典,值作为项目的索引,键作为项目本身

转载 作者:IT王子 更新时间:2023-10-29 04:10:38 25 4
gpt4 key购买 nike

我有一个数组,例如 -

arr[0] = "Name";
arr[1] = "Address";
arr[2] = "Phone";
...

我想创建一个 Dictionary<string, int>这样数组值将是字典键,字典值将是索引,这样我就可以通过在 O(1) 中查询其名称来获取列的索引。 .我知道这应该相当简单,但我无法理解它。

我试过了-

Dictionary<string, int> myDict = arr.ToDictionary(x => x, x => indexOf(x))

但是,这会返回 -

{(Name, 0), (Address, 0), (Phone, 0),...}

我知道发生这种情况是因为它存储了第一次出现的索引,但这不是我想要做的。

最佳答案

您可以使用包含索引的 Select 重载:

var dictionary = array.Select((value, index) => new { value, index })
.ToDictionary(pair => pair.value, pair => pair.index);

或者使用Enumerable.Range:

var dictionary = Enumerable.Range(0, array.Length).ToDictionary(x => array[x]);

请注意,如果您尝试提供两个相等的键,ToDictionary 将抛出异常。您应该仔细考虑您的数组中有两个相等值的可能性,以及您希望在这种情况下发生什么。

不过,我很想手动完成:

var dictionary = new Dictionary<string, int>();
for (int i = 0; i < array.Length; i++)
{
dictionary[array[i]] = i;
}

关于c# - 将数组转换为字典,值作为项目的索引,键作为项目本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com