键值对 C#
KeyValue Pair C#
我想知道如何在 C# 中使用 KeyValuePairs 列表。我会使用字典,但它们不允许重复值。
还有查找,我也不知道如何编写语法。
我看过其他解决方案,但我真的很困惑如何使用
当然,我能找到的唯一示例是 for 循环,我想让它更简洁一些。
List<KeyValuePair<char, int>> data = new List<KeyValuePair<char, int>>();
例如,我想在添加元素之前进行一些检查。
例如:我有一个字符数组,我想在将其添加到我的列表之前对其进行检查。谁能告诉我怎么查。
char[] inputArray = input.ToCharArray();
for(int i = 0; i < inputArray.Length ; i++)
{
if(!data.Values.Contains(inputArray[i]))
{
data.Add(new KeyValuePair<char,int>(inputArray[i], 1));
}
}
以上代码无效。有人可以帮助一下语法吗?
我没有在网上找到任何具体的例子。
任何帮助表示赞赏。
不得不说,你的问题比较混乱。我 认为 如果键不存在,你正试图将值添加到 KeyValuePair
的列表中?这似乎与您所说的不使用 Dictionary
不符,但无论如何您都可以:
List<KeyValuePair<char, int>> data = new List<KeyValuePair<char, int>>();
char[] inputArray = "my string".ToCharArray();
foreach (var t in inputArray)
{
if (!data.Any(x => x.Key == t))
{
data.Add(new KeyValuePair<char, int>(t, 1));
}
}
如果你只想从 inputArray 获取唯一值,你也可以这样做:
var myVals = inputArray.Distinct();
最后,如果你想得到字符串中每个不同字符的计数,你可以使用:
var counts = inputArray.GroupBy(x => x)
.Select(group => new
{
Character = group.Key,
Count = group.Count()
});
根据您的评论,确实听起来您想要这里的词典。
考虑一下你的逻辑,你在添加到列表之前已经检查过重复项了吗?这意味着您的列表 绝不会 重复。字典防止你有重复的键,而不是重复的值。所以你的逻辑很容易变成:
var dictionary = new Dictionary<char, int>();
foreach(char c in input)
{
//faster than Any()
if(!dictionary.ContainsKey(c))
{
dictionary.Add(c, 1);
}
}
我想知道如何在 C# 中使用 KeyValuePairs 列表。我会使用字典,但它们不允许重复值。
还有查找,我也不知道如何编写语法。
我看过其他解决方案,但我真的很困惑如何使用
当然,我能找到的唯一示例是 for 循环,我想让它更简洁一些。
List<KeyValuePair<char, int>> data = new List<KeyValuePair<char, int>>();
例如,我想在添加元素之前进行一些检查。 例如:我有一个字符数组,我想在将其添加到我的列表之前对其进行检查。谁能告诉我怎么查。
char[] inputArray = input.ToCharArray();
for(int i = 0; i < inputArray.Length ; i++)
{
if(!data.Values.Contains(inputArray[i]))
{
data.Add(new KeyValuePair<char,int>(inputArray[i], 1));
}
}
以上代码无效。有人可以帮助一下语法吗?
我没有在网上找到任何具体的例子。 任何帮助表示赞赏。
不得不说,你的问题比较混乱。我 认为 如果键不存在,你正试图将值添加到 KeyValuePair
的列表中?这似乎与您所说的不使用 Dictionary
不符,但无论如何您都可以:
List<KeyValuePair<char, int>> data = new List<KeyValuePair<char, int>>();
char[] inputArray = "my string".ToCharArray();
foreach (var t in inputArray)
{
if (!data.Any(x => x.Key == t))
{
data.Add(new KeyValuePair<char, int>(t, 1));
}
}
如果你只想从 inputArray 获取唯一值,你也可以这样做:
var myVals = inputArray.Distinct();
最后,如果你想得到字符串中每个不同字符的计数,你可以使用:
var counts = inputArray.GroupBy(x => x)
.Select(group => new
{
Character = group.Key,
Count = group.Count()
});
根据您的评论,确实听起来您想要这里的词典。
考虑一下你的逻辑,你在添加到列表之前已经检查过重复项了吗?这意味着您的列表 绝不会 重复。字典防止你有重复的键,而不是重复的值。所以你的逻辑很容易变成:
var dictionary = new Dictionary<char, int>();
foreach(char c in input)
{
//faster than Any()
if(!dictionary.ContainsKey(c))
{
dictionary.Add(c, 1);
}
}