首页 > 编程语言 >在 C# 中,如果您有一个 Dictionary<TKey, TValue>,并且您知道某个值(value),想要找到对应的键(key),可以通过遍历字典来实现。

在 C# 中,如果您有一个 Dictionary<TKey, TValue>,并且您知道某个值(value),想要找到对应的键(key),可以通过遍历字典来实现。

时间:2024-11-05 11:17:18浏览次数:5  
标签:GetKeyByValue valueToFind Dictionary C# value key null 字典

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 创建一个字典
        Dictionary<string, int> sports = new Dictionary<string, int>
        {
            { "篮球", 1 },
            { "足球", 2 },
            { "乒乓球", 3 }
        };

        // 已知值
        int valueToFind = 2;

        // 查找键
        string key = GetKeyByValue(sports, valueToFind);

        if (key != null)
        {
            Console.WriteLine($"值 {valueToFind} 对应的键是: {key}");
        }
        else
        {
            Console.WriteLine($"未找到对应值 {valueToFind} 的键。");
        }
    }

    static string GetKeyByValue(Dictionary<string, int> dictionary, int value)
    {
        foreach (var kvp in dictionary)
        {
            if (kvp.Value.Equals(value))
            {
                return kvp.Key; // 返回找到的键
            }
        }
        return null; // 如果没有找到,返回 null
    }
}

说明

  1. 字典定义

    • 创建一个 Dictionary<string, int> 来存储键值对。
  2. 查找函数

    • GetKeyByValue 方法接受一个字典和一个值作为参数,遍历字典中的每个键值对。
    • 如果找到对应的值,返回相应的键;如果没有找到,返回 null
  3. 使用示例

    • Main 方法中调用 GetKeyByValue,并输出结果。

注意事项

  • 值的唯一性:如果字典中有多个相同的值,上述方法只会返回找到的第一个键。如果需要所有对应的键,可以将返回类型改为 List<string>,并在函数中添加所有找到的键到列表中。
  • 性能:查找操作的时间复杂度为 O(n),因为需要遍历字典。如果频繁进行这样的查找,考虑反向存储一个值到键的字典(Dictionary<int, string>),以提高查找效率。

标签:GetKeyByValue,valueToFind,Dictionary,C#,value,key,null,字典
From: https://blog.csdn.net/qq_43706876/article/details/143504540

相关文章

  • 人脸检测之MTCNN算法网络结构
    MTCNN(Multi-taskCascadedConvolutionalNetworks)是一种用于人脸检测和关键点检测的深度学习模型,特别适合在复杂背景下识别出多尺度的人脸。它通过多任务学习来实现人脸检测和人脸关键点定位(如眼睛、鼻子、嘴巴的位置),实现高精度的人脸区域定位和关键点提取。MTCNN主要由三个......
  • Dell 塔式t440 安装centos
    硬件介绍1个10核2个超线程数cpu、cpu型号为4210R、内存大小为32G、两块1T硬盘、一张软阵列卡S140安装过程点击查看安装过程1.开机按F2进入SystemSetup界面,进入SystemBiosSettings界面1.1.SystemBiosSettings->SATASettings->选择【ACHIMode】......
  • 关于LLC知识21(变压器开气隙)
    对于一个真正的变压器,磁芯的磁导率都是非常高的假设计算出来的变压器原边绕组的电感量是1mH,那么我们按照匝数绕制的出来然后把原装磁芯套上去测试电感量的时候你会发现,绕组的电感来很大,因为原装磁芯磁导率很高原装磁芯导致电感量太大,而假设需要的是1mH(假设Lm=1mH),那么如果想......
  • .net core 项目使用log4net
    引入nuget包 1.增加一个log4Net.config的文件<?xmlversion="1.0"encoding="utf-8"?><log4net><appendername="DebugAppender"type="log4net.Appender.DebugAppender"><layouttype="log4n......
  • 手把手教你编写自定义Categraf插件
    本文分享自天翼云开发者社区《手把手教你编写自定义Categraf插件》,作者:任****佳Categraf是一个监控采集Agent,类似Telegraf、Grafana-Agent、Datadog-Agent,希望对所有常见监控对象提供监控数据采集能力,采用All-in-one的设计,不但支持指标采集,也希望支持日志和调用链路的数据采......
  • 2PC和XA的区别
    2PC和XA的区别2PC(Two-PhaseCommit)是一种分布式事务处理协议,用于确保多个参与者在分布式环境中进行事务协调时的一致性。XA(eXtendedArchitecture)是一种标准的分布式事务处理协议,也用于确保分布式环境中的事务一致性。2PC是一种较为简单的协议,主要由一个协调者和多个参与者组成,......
  • 我不知道的Javascript
    Javascript数据类型基本数据类型(存放在栈内存中,当被引用和拷贝时会复制一个完全相等的变量)Number,String,Boolean,Symbol,Undefined,Null引用数据类型(对象类型,存放在堆内存中,存储的是地址,当引用和拷贝时,提供的是地址.有共享地址的特征)ObjectArrayRe......