c# - C# System.ArgumentException:已添加具有相同键的项
问题描述
有人可以建议我如何防止此错误。
错误在这里:dict.Add(sourse[i + 1], target[j + 1]);
using System.IO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication8
{
class Program
{
static void Main(string[] args)
{
var sourse = File.ReadAllLines("1.txt", Encoding.Default);
var target = File.ReadAllLines("2.txt", Encoding.Default);
var dict = new Dictionary<string, string>();
for (int i = 0; i < sourse.Length; i += 2)
{
for (int j = 0; j < target.Length; j += 2)
{
if (sourse[i] == target[j])
{
dict.Add(sourse[i + 1], target[j + 1]);
break;
}
}
}
var result = File.ReadAllLines("3.txt", Encoding.Default).ToList();
for (int i = result.Count - 1; i >= 0; i--)
{
foreach (var item in dict)
{
if (result[i].EndsWith(item.Key))
{
result.Insert(i - 1, item.Value);
break;
}
}
}
File.WriteAllLines("result.txt", result, Encoding.Default);
}
}
}
我使用 Windows 7 64 位。这段代码过去可以正常工作。昨天停止工作。
解决方案
更改这部分代码:
if (sourse[i] == target[j])
{
dict.Add(sourse[i + 1], target[j + 1]);
break;
}
对此:
if (sourse[i] == target[j])
{
if (!dict.ContainsKey(sourse[i + 1]))
{
dict.Add(sourse[i + 1], target[j + 1]);
}
break;
}
这将防止添加具有相同键的字典项
推荐阅读
- python - Itertools groupby 使用另一个列表对列表进行分组
- pytorch - AssertionError:Torch 未在启用 CUDA 的情况下编译
- php - 通过 mail() 发送的电子邮件中的 URL 无法在每个邮件客户端中工作/显示不同
- three.js - 对象缩放/scene.remove() 出现问题;
- javascript - .push 似乎没有添加到我的数组中
- android - ConstraintLayout 链上下文菜单在 Android Studio 中不再可见
- python - Pandas Series.tolist 错误地转录空白空间?
- nativescript - tns 使用特定的 sdk 运行 android
- vba - activeX 按钮可根据单元格值将工作表 1 中的一行数据复制到工作表 2
- parsing - LL(1) 解析冲突