使用字典和列表的依赖图
Dependency Graph using Dictionaries and Lists
我正在处理依赖关系图,但无法正确添加我的依赖者和被依赖者。
我的设置如下:
private List<Tuple<string, string>> DG;
private Dictionary<string, List<string>> dependants;
private Dictionary<string, List<string>> dependees;
我正在尝试将以下内容添加到我的词典中:
for (int i = 0; i < DG.Count; i++)
{
dependants.Add(DG[i].Item1, new List<string>().Add(DG[i].Item2);
}
它给了我错误 "Argument2: Cannot convert from void to System.Collections.Generic.List" ,我试图在第二个参数中添加到新列表。我想我知道为什么会出现错误,但我无法想出正确添加到词典中的替代方法。
我的目标是这样的:
//DG = {("a", "b"), ("a", "c"), ("b", "d"), ("d", "d")}
// dependents("a") = {"b", "c"}
// dependents("b") = {"d"}
// dependents("c") = {}
// dependents("d") = {"d"}
// dependees("a") = {}
// dependees("b") = {"a"}
// dependees("c") = {"a"}
// dependees("d") = {"b", "d"}
所以 ("a", "b") 意味着 "b" 是 "a" 的依赖者,而 "a" 是 "b" 的依赖者
它比您的代码稍长,但这可能是您需要的:
for (int i = 0; i < DG.Count; i++)
{
if (!dependants.ContainsKey(DG[i].Item1))
{
List<string> temp = new List<string>();
temp.add(DG[i].Item2);
dependants.Add(DG[i].Item1, temp);
}
else
dependants[DG[i].Item1].Add(DG[i].Item2);
}
希望较长的代码可以帮助您理解流程。这仅用于制作家属。此外,您在原始代码中缺少括号:
dependants.Add(DG[i].Item1, new List<string>().Add(DG[i].Item2);
应该是
dependants.Add(DG[i].Item1, new List<string>().Add(DG[i].Item2));
我正在处理依赖关系图,但无法正确添加我的依赖者和被依赖者。
我的设置如下:
private List<Tuple<string, string>> DG;
private Dictionary<string, List<string>> dependants;
private Dictionary<string, List<string>> dependees;
我正在尝试将以下内容添加到我的词典中:
for (int i = 0; i < DG.Count; i++)
{
dependants.Add(DG[i].Item1, new List<string>().Add(DG[i].Item2);
}
它给了我错误 "Argument2: Cannot convert from void to System.Collections.Generic.List" ,我试图在第二个参数中添加到新列表。我想我知道为什么会出现错误,但我无法想出正确添加到词典中的替代方法。
我的目标是这样的:
//DG = {("a", "b"), ("a", "c"), ("b", "d"), ("d", "d")}
// dependents("a") = {"b", "c"}
// dependents("b") = {"d"}
// dependents("c") = {}
// dependents("d") = {"d"}
// dependees("a") = {}
// dependees("b") = {"a"}
// dependees("c") = {"a"}
// dependees("d") = {"b", "d"}
所以 ("a", "b") 意味着 "b" 是 "a" 的依赖者,而 "a" 是 "b" 的依赖者
它比您的代码稍长,但这可能是您需要的:
for (int i = 0; i < DG.Count; i++)
{
if (!dependants.ContainsKey(DG[i].Item1))
{
List<string> temp = new List<string>();
temp.add(DG[i].Item2);
dependants.Add(DG[i].Item1, temp);
}
else
dependants[DG[i].Item1].Add(DG[i].Item2);
}
希望较长的代码可以帮助您理解流程。这仅用于制作家属。此外,您在原始代码中缺少括号:
dependants.Add(DG[i].Item1, new List<string>().Add(DG[i].Item2);
应该是
dependants.Add(DG[i].Item1, new List<string>().Add(DG[i].Item2));