Dictionary ContainsValue和get key在一个步骤或有效的方式来完成这个任务
本文关键字:有效 方式 任务 一个 key get ContainsValue Dictionary | 更新日期: 2023-09-27 18:02:41
是否有有效的方法来检查值是否在字典中,一旦知道值在那里,然后找到该值的键?
//检查字典中是否存在sortedWord(即key为word, value为sortedWord)
if (anagramDict.ContainsValue(sortedWord))
{
//Get the key for matching the sortedWord
string keyWord = anagramDict.Single(kvp => kvp.Value == sortedWord).Key;
基本上是这个问题的反向请求。Dictionary ContainsKey和get value在一个函数中
请求与值对应的"the"键,但是可能有多个这样的键。因此,您可能应该使用.First()
而不是.Single()
。
并且字典的排序顺序是未定义的,因此查找"第一个"键是不明确的。
您可以做如下操作(对于值类型的键也适用):
var keys = dict.Where(kvp => kvp.Value == sortedWord).Select(kvp => kvp.Key).ToList();
if (keys.Count > 0)
{
// Now you need to decide which matching key you want.
// If you don't care, you can take the first
key = keys[0];
}
如果你不关心你得到的是哪个键,那么在第一次匹配时停止是更有效的:
var keys = dict.Where(kvp => kvp.Value == sortedWord).Select(kvp => kvp.Key).Take(1).ToList();
if (keys.Count > 0)
{
key = keys[0];
}
对于键是引用类型的字典(这是您的情况:我假设您的键是字符串),并且假设您不关心得到哪个键,您可以将其简化为:
var key = dict.Where(kvp => kvp.Value == sortedWord).Select(kvp => kvp.Key).FirstOrDefault();
if (key != null)
{
...
}