【问题标题】:Multidimensional array with two values for a single key具有单个键的两个值的多维数组
【发布时间】:2019-07-13 21:27:52
【问题描述】:

我需要创建一个数组,其中一个键可以有两个值。 我想得到这样的数组格式:

array = 
{
    "key" => {"value1", "value2"}
}

我试过这样格式化数组:

public string[,,] array = new string[,,] 
    {
        {
            { "1", "5", "6" }, 
            { "2", "5", "7" }
        },

        {
            { "3", "1", "2" }, 
            { "4", "1", "3" }
        }
    };

但我只能循环访问 16 个值,我想通过我输入的键访问它们。

如何以某种方式创建数组,以便获得所需的输出?

【问题讨论】:

  • 数组没有键。您在寻找DictionaryLookup 实现吗?
  • 嗯,所以和 PHP 不一样... 和 PHP 数组比较相似,或者这种情况下,什么更容易实现?
  • 您可能正在寻找 C# MultiMap,或者可能只是 Dictionary<string,List<string>>
  • 我不懂 PHP,但我找到了这个问题(重复候选)。检查它,如果它回答了您的问题,请接受它作为重复。

标签: c# arrays multidimensional-array


【解决方案1】:

您可以做的最简单的事情是使用带有字符串 keyDictionary 和作为值的 Value Tuple。字典本质上具有快速查找,并且命名值元组在访问键时为您提供一些理智

// Instantiated the dictionary
var funky = new Dictionary<string,(int Value1, int Value2)>();

// add some values
funky.Add("mykey",(1,5));
funky.Add("anotherKey",(4,5));

// access the values
Console.WriteLine(funky["mykey"].Value1);
Console.WriteLine(funky["anotherKey"].Value2);

【讨论】:

  • @Mr.国王,这是你应该接受并从中学习的答案!
  • 天哪,谢谢!在看到您的评论之前,我实际上已经这样做了: string[,] arr = new string[,] { { "1", "2" }, { "3", "4" } };字典 列表 = 新字典(); for (int i = 0; i
【解决方案2】:

您不是在寻找数组。您可能正在搜索字典。所以,MS 这么说字典:https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.dictionary-2?view=netframework-4.8

表示键和值的集合。

因此,您需要使用给定的键访问一些值。就是这个。 示例:

Dictionary<string, string[]> xs = new Dictionary<string, string[]>()
            {
                {"key1", new string[] {"value1","value1.1"} },
                {"key2", new string[] {"value2","value2.2"} },
            };

xs["key3"] = new string[] { "test42" };

【讨论】:

    【解决方案3】:

    最好的方法是创建一个字典,您可以在其中使用唯一键访问值,并且该值可以是您想要的任何类型。 在这种情况下,它是带有字符串键和字符串值列表的字典

    var keyValues = new Dictinary<string, List<string>>();
    keyValues.Add("key1", new List()
        {
            "Value1",
            "Value2"
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多