将一个txt文件转换为dictionary
本文关键字:string dictionary 转换 文件 txt 一个 | 更新日期: 2023-09-27 18:16:24
我有一个文本文件,我需要把所有偶数行字典键和所有偶数行字典值。我的问题最好的解决办法是什么?
int count_lines = 1;
Dictionary<string, string> stroka = new Dictionary<string, string>();
foreach (string line in ReadLineFromFile(readFile))
{
if (count_lines % 2 == 0)
{
stroka.Add Value
}
else
{
stroka.Add Key
}
count_lines++;
}
试试这个:
var res = File
.ReadLines(pathToFile)
.Select((v, i) => new {Index = i, Value = v})
.GroupBy(p => p.Index / 2)
.ToDictionary(g => g.First().Value, g => g.Last().Value);
这个想法是将所有行按对分组。每一组恰好有两项——键作为第一项,值作为第二项。
您可能想这样做:
var array = File.ReadAllLines(filename);
for(var i = 0; i < array.Length; i += 2)
{
stroka.Add(array[i + 1], array[i]);
}
这将分两步读取文件,而不是每一行单独读取。
我想你想用这些对:(2,1)
, (4,3)
, ... .如果没有,请更改此代码以适应您的需要。
可以逐行读取并添加到Dictionary
public void TextFileToDictionary()
{
Dictionary<string, string> d = new Dictionary<string, string>();
using (var sr = new StreamReader("txttodictionary.txt"))
{
string line = null;
// while it reads a key
while ((line = sr.ReadLine()) != null)
{
// add the key and whatever it
// can read next as the value
d.Add(line, sr.ReadLine());
}
}
}
这样你将得到一个字典,如果你有奇数行,最后一个条目将有一个空值。
String fileName = @"c:'MyFile.txt";
Dictionary<string, string> stroka = new Dictionary<string, string>();
using (TextReader reader = new StreamReader(fileName)) {
String key = null;
Boolean isValue = false;
while (reader.Peek() >= 0) {
if (isValue)
stroka.Add(key, reader.ReadLine());
else
key = reader.ReadLine();
isValue = !isValue;
}
}