【问题标题】:How can I populate this complex List?如何填充这个复杂的列表?
【发布时间】:2017-02-25 17:56:16
【问题描述】:

我有一个复杂的列表数据结构,我想填充它,但我似乎无法找到一种方法来为其植入值。

List<Dictionary<List<int>, int>> l1 = new List<Dictionary<List<int>, int>>();

我想要这样的东西,

l1.add( (1,2,3), 6);

我想添加一个数字列表及其总和。

【问题讨论】:

  • 使用列表作为字典的键类型很少有意义,因为具有完全相同内容的两个列表不会被识别为相同。请详细说明您的实际任务是什么以获得好的答案。
  • @NineBerry 即使可以使用自定义比较器创建字典...
  • 基本上@NineBerry 我的任务是找到数组中最大递增子序列的总和并打印该子序列。
  • @user7334855 我真的不明白这个数据结构将如何帮助完成这项任务。要解决这个任务,你基本上只需要遍历数组一次,并在途中使用少数整数变量来存储一些数组索引和总和。
  • 我找到了一种方法来完成这一切,而且也以一种非常简单的方式。我可以在 cmets 中分享代码吗? @NineBerry

标签: c# list dictionary data-structures


【解决方案1】:

真的不知道你为什么要这样做,但如果你真的必须这样做

var list = new List<Dictionary<List<int>, int>>();
list.Add(new Dictionary<List<int>, int> {{ new List<int> { 1, 2, 3 }, 6}});

【讨论】:

  • 谢谢你,这是非常需要的。
【解决方案2】:

我怀疑你真的需要一个列表字典列表。不过,您可以编写某种扩展方法:

public static ListHelpers
{
    public void AddSum(this List<Dictionary<List<int>, int>> list, params int[] values)
    {
        list.Add(new Dictionary<List<int>, int> { values.ToList(), values.Sum() });
    }
}

然后使用它:

l1.AddSum(1, 2, 3);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多