gpt4 book ai didi

c# - 列表包含字典包含列表

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:47 24 4
gpt4 key购买 nike

问题

我在 C# 中需要一个类似于上面的数据结构,但我在访问内容时遇到问题,我已经看到我可以在 C++ 中执行此操作,在 C# 中如何完成同样的操作?

List<Dictionary<string, List<int>>> data = 
new List<Dictionary<string, List<int>>>(5);

当我执行 Data[0] 时,我收到一个错误,指出索引超出范围..

谁能指出我该怎么做。或者我做错了什么?

附录:

->我想做什么

我基本上是在创建一个数据结构来保存一个月的计划。所以每个包含 5 周的列表->事件字典,其中每个事件的值为 ->7 个整数的列表,表示一周中每天花在该事件上的小时数。

我知道我需要添加空白条目。附加问题是这样的。

->查询

现在我必须向列表中添加 5 个空白词典。以及字典的每个 Key 中的 7 个整数(初始化为零)的列表,表示每天消耗的时间。

有没有一种方法可以在列表中初始化 5 个空白字典并在内部相同,而无需手动创建新字典并添加它们。使用 C++,我相信您可以做到这一点,甚至可以输入要将每个条目初始化为的值,所以..

像这样的语句

Vector<int> *vec = new Vector<int>(5,0);

用 5 个条目初始化 vec,每个条目都是 0。我可以在 c# 中做同样的事情吗?

感谢您的帮助。

最佳答案

这与列表是复杂类型无关。你会得到同样的结果:

List<string> list = new List<string>(5);
string x = list[0]; // This will fail too

List<T>(int) 构造函数创建一个具有给定容量 的列表(即支持它的数组的初始大小为 5,假设它不认为它太小而无用)。它的大小仍然为 0。

您仍然需要将元素添加到列表中才能访问它们。

编辑:没有构造函数可以用一组给定的值“填充”列表。使用 LINQ,您可以编写:

List<string> list = Enumerable.Repeat("foo", 5).ToList();

...但是您不会想为您的字典这样做,否则您最终会得到对同一个字典的 5 个引用。你可以使用:

var list = Enumerable.Range(0, 5)
.Select(x => new Dictionary<string, List<int>>())
.ToList();

请注意,这里的每个字典 都是空的。

我个人可能只是创建列表并用 for 循环填充它...

关于c# - 列表包含字典包含列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617770/

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