- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 Dictionary<string, int>
我正在从列表中读取一些字符串...我想将它们添加到字典中,但是如果该字符串已经在字典中,我希望它的值增加 1。
我试过的代码如下,但是有一些字符串随着每次输入而增加。有什么问题吗?
Dictionary<string, int> dictionary = new Dictionary<string, int>();
foreach (String recordline in tags)
{
String recordstag = recordline.Split('\t')[1];
String tagToDic = recordstag.Substring(0, (recordstag.Length-1) );
if (dictionary.ContainsKey(tagToDic) == false)
{
dictionary.Add(tagToDic, 1);
}
else
{
try
{
dictionary[tagToDic] = dictionary[tagToDic] + 1;
}
catch (KeyNotFoundException ex)
{
System.Console.WriteLine("X" + tagToDic + "X");
dictionary.Add(tagToDic, 1);
}
}
}
编辑:为了回答您的意见...我正在删除字符串的最后一个字符,因为它始终是一个空格...我的输入是这样的:
10000301 business 0 0,000
10000301 management & auxiliary services 0 0,000
10000316 demographie 0 0,000
10000316 histoire de france 0 0,000
10000347 economics 0 0,000
10000347 philosophy 1 0,500
我只想要“业务”或“管理和辅助服务”等字符串。
最佳答案
您正在拆分输入字符串数组中的每个字符串并选择字符串数组中的第二个字符串。 然后您将使用 SubString 删除第二个字符串的最后一个字符。因此,所有仅在最后一个字符不同的字符串都将被视为相同并递增。这就是为什么您可能会看到“一些字符串随着每次输入而增加”。
编辑:如果删除最后一个字符的目的是删除空格,请改用 String.Trim。另一个编辑是使用 TryGetValue 而不是 ContainsKey,它可以更好地增加您的值(value)。代码已在下方编辑。
试试这个:
Dictionary<string, int> dictionary = new Dictionary<string, int>();
foreach(string recordline in tags)
{
string recordstag = recordline.Split('\t')[1].Trim();
int value;
if (!dictionary.TryGetValue(recordstag, out value))
dictionary.Add(recordstag, 1);
else
dictionary[recordstag] = value + 1;
}
关于c# - Dictionary<string, int> 增加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406165/
我有一个列表,看起来像:mot = [0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0]我需要附加到一个列表,当元素从 0 改变时
我正在尝试增加从 DOM 中获取的值。 该值卡在“1”; 我做错了什么? HTML + Flak JS var flakNr = 1; //Create flak $('#btnAddFla
我希望能够创建一个按钮来增加赞成票数并减少反对票数 $result = mysqli_query($con, "SELECT * FROM champion_counters_b WHERE cham
我有一个 decimal 变量,可以同时从多个线程访问。 Interlocked 类函数根本不支持小数,所以我剩下的唯一方法是使用 lock(){}。这似乎有点矫枉过正。 是否有其他方法以线程安全的方
我在很多论坛上搜索过,问题,在doc但找不到正确的解决方案。 问题 使用 angularfire2 增加值的最佳方法是什么? 我看到我们可以使用 [transaction()][] 但它实际上不适用于
我在一个文件中有以下文本: versionName "1.11.0" 每次运行这样的命令时,我都想增加数字: versionName "1.12.0" versionName "1.13.0" ve
我将对象设置为:{“name”:“alex”,“code”:“123”} 进入sharedPrefrence Calss A: var resBody = {};
我想运行一个循环。我希望它执行 16 次,例如, for (var i = 0; i <= 15; i++) { alert(i); } 我希望这个循环在单击按钮时运行。但循环应该只返回 i 的
我的条目如下所示: 在输入数据之前,必须使用条码扫描仪填写条码。当 Firestore 中存在条形码时,我希望增加产品数量。当条形码在 Firestore 中不可用时,Intent 到另一个类。 代码
好的。我正在尝试使用每行增加的值更新多行。 Update table set value=(.......) where update_row = something... 这可能吗?以下行: ID:
tbl_A [编号 |设施部分 | assigned_no] tbl_B [col1 |列2|发给 | col3 | col_etc] 下拉列表将检索 tbl_A 表的 facility_sectio
tbl_A [id | facility_section | assigned_no] ---------- tbl_B [col1 | col2| issued_to | col3 | col_et
我有一个 Dictionary我正在从列表中读取一些字符串...我想将它们添加到字典中,但是如果该字符串已经在字典中,我希望它的值增加 1。 我试过的代码如下,但是有一些字符串随着每次输入而增加。有什
为什么这样做: val x = Map[Int,Int]() val y = (1, 0) x + y 但不是这个? val x = Map[Int,Int]() x + (1, 0) 产生的错误是:
这是我的代码,用于在 Excel 中提供行号: clusters = 3 rowRef = [9, 12, 15] x = 1 while x < clusters: rowRef[x:] =
当上述路径看起来像这样时,如何增加 img 路径的值? //ab[x]/img X 值增加 1,限制为 50。 尝试编写一个关于如何点击网站上的多张图片的测试用例。 编辑:只是想补充一点,我刚开始使用
我有一个 df 看起来像这样: df dim_pptx qp_pptx diff Absolute Radio 7.39 7.53
我的 node.js 应用程序中有一个 mongoose 模型,代表发票。我已经弄清楚了其中的大部分内容,但我确实需要确保我的发票已编号/递增,以便能够为我的客户提供适当的引用。 使用 SQL 数据库
在我的任务中,我应该修改一个 greenfoot 项目,通过创建私有(private)数据类型并使用 setter 和 getter 来展示对数据封装的理解,以显示游戏中接触和错过的病毒和细菌的值修改
我尝试使用 $inc 增加字段值,但没有取得太大成功。我有以下架构: var postSchema = mongoose.Schema({ title : { type: Stri
我是一名优秀的程序员,十分优秀!