我希望读取CSV文件,并正确地将值存储在字典中。
using (var reader = new StreamReader(@"CSV_testdaten.csv"))
{
while (!reader.EndOfStream)
{
string new_line;
while ((new_line = reader.ReadLine()) != null)
{
var values = new_line.Split(",");
g.add_vertex(values[0], new Dictionary<string, int>() { { values[1], Int32.Parse(values[2]) } });
}
}
}
add_vertex函数如下:
Dictionary<string, Dictionary<string, int>> vertices = new Dictionary<string, Dictionary<string, int>>();
public void add_vertex(string name, Dictionary<string, int> edges)
{
vertices[name] = edges;
}
CSV文件长这样:
有多行的values[0]值相同(例如values[0]是“0”),而不是覆盖现有字典,应该将其添加到已经存在values[0]=0的字典中,就像这样:
g.add_vertex("0", new Dictionary<string, int>() { { "1", 731 } ,
{ "2", 1623 } , { "3" , 1813 } , { "4" , 2286 } , { "5" , 2358 } ,
{ "6" , 1 } , ... });
我想将在CSV文件的第一列具有相同ID的所有值添加到一个具有该ID的字典中。但是我不确定如何做到这一点。有人能帮助吗?
add_vertex
方法(顺便说一下,更常规的命名应该是AddVertex
,养成遵循命名规范的习惯是个好主意)只需要接受一个边,为什么不将其改为AddVertex(string name, string edgeName, int edgeValue)
呢?(我只是猜测了参数名称 - 我无法确定这些边代表什么。)然后只需检查字典是否已经包含该顶点名称的条目,如果没有,则创建一个新值(也是一个字典)。无论哪种情况,都将新条目添加到该顶点的字典中。 - Jon Skeet