【C#】键值对的一种常见数据结构Dictionary<TKey, TValue>

在 C# 中,Dictionary<TKey, TValue> 是一个 键值对(key-value)集合,是一种非常常见的数据结构。它允许通过 key)来快速查找与之相关的 value)。你可以将其类比为一个映射(map)或者是一个关联数组,常用于存储一对一的关联数据。

1. Dictionary 基本概念

  • 键(Key):唯一的标识符,通常是用来检索对应值的。键必须是唯一的,也就是说,同一个字典中不能有两个相同的键。
  • 值(Value):与某个键相关联的数据。多个键可以映射到相同的值,但一个键只能映射到一个值。

2. Dictionary<string, int> 解释

Dictionary<string, int> 中:

  • string键(Key) 的类型,表示键是一个字符串("Pn000""Pn001" 等)。
  • int值(Value) 的类型,表示与每个键关联的值是整数(例如 195、4386 等)。

3. 如何使用 Dictionary<string, int>

创建字典
Dictionary<string, int> myDictionary = new Dictionary<string, int>();
添加键值对
myDictionary.Add("Pn000", 195);
myDictionary.Add("Pn001", 438);
myDictionary.Add("Pn002", 1665);
访问字典中的值

通过键来获取值:

int value = myDictionary["Pn000"];  // 返回 195
Console.WriteLine(value);
修改字典中的值

可以直接通过键修改值:

myDictionary["Pn000"] = 999;  // 更新 "Pn000" 对应的值为 999
检查键是否存在

在访问字典的值之前,最好检查键是否存在,以避免抛出异常:

if (myDictionary.ContainsKey("Pn000"))
{int value = myDictionary["Pn000"];Console.WriteLine(value);
}
遍历字典

你可以使用 foreach 循环遍历字典中的所有键值对:

foreach (var kvp in myDictionary)
{Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}

4. 常见用法

  • 查找某个值:可以通过键来快速查找值,因为字典是通过哈希表(HashTable)实现的,查找操作的时间复杂度是 O(1),即常数时间。
  • 计数器:字典经常用于实现计数器功能,例如统计一组数据中每个元素出现的次数。
Dictionary<string, int> wordCount = new Dictionary<string, int>();
foreach (string word in words)
{if (wordCount.ContainsKey(word)){wordCount[word]++;}else{wordCount[word] = 1;}
}

5. 字典的优点

  • 快速查找:字典通过哈希表实现,能够非常快速地根据键查找对应的值。
  • 灵活的键值对存储:字典可以存储任何类型的对象作为键和值,只要键是唯一的。

6. 小结

Dictionary<string, int> 是一种非常有用的数据结构,用于存储和快速查找键值对。在实际编程中,我们常常使用字典来存储配置项、计数数据、映射关系等信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/35660.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

生产慎用之调试日志对空间矢量数据批量插入的性能影响-以MybatisPlus为例

目录 前言 一、一些缘由 1、性能分析 二、插入方式调整 1、批量插入的实现 2、MP的批量插入实现 3、日志的配置 三、默认处理方式 1、基础程序代码 2、执行情况 四、提升调试日志等级 1、在logback中进行设置 2、提升后的效果 五、总结 前言 在现代软件开发中&…

Linux下编译安装METIS

本文记录Linux下编译安装METIS的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1 一、安装依赖 1.1 下载GKlib sudo apt-get install build-essential sudo apt-get install cmake 2.2 编译安装GKlib 下载GKlib代码&#xff0c; …

数据链路层总结

- - 链路、物理链路&#xff1a;两节点间物理线路&#xff08;有线、无线&#xff09;&#xff0c;中间没有任何其他的交换节点 数据链路、逻辑链路&#xff1a; 链路 协议需要的硬件、软件 网络适配器(网卡)&#xff1a;包含物理层、数据链路层 网络适配器软件驱动程…

基于Java和Vue开发的漫画阅读软件漫画阅读小程序漫画APP

前景分析 受众广泛&#xff1a;漫画的受众群体广泛&#xff0c;不仅限于青少年&#xff0c;还涵盖了成年人等多个年龄层和社会阶层。漫画文化在全球范围内的影响力不断扩大&#xff0c;未来漫画软件创业可以考虑全球市场的拓展。 市场需求大&#xff1a;数字化阅读趋势下&…

LoRa无线空调计费系统都应用在哪里

中央空调计费系统由于布线方式需要消耗大量的人力及成本&#xff0c;LoRa在楼宇自控及智能家居中的应用越来越广泛&#xff0c;成为当前普遍应用的通信技术。 LoRa模块无线传输技术的不断完善&#xff0c;逐步解决了温控器通信方面布线困难、施工成本高的问题&#xff0c;促进…

4.STM32通信接口之SPI通信---硬件SPI的介绍

上一节&#xff0c;我们学会软件的SPI&#xff0c;本节&#xff0c;我们将学习STM32的SPI硬件收发电路&#xff0c;虽然STM32的硬件收发电路很强大&#xff0c;但是&#xff0c;很多我们都用不到&#xff0c;我们只需会最基本的就可以。硬件的好处就是稳定&#xff0c;功能模块…

Open AI 推出 ChatGPT Pro

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

洛谷P1030 [NOIP2001 普及组] 求先序排列(c嘎嘎)

题目链接&#xff1a;P1030 [NOIP2001 普及组] 求先序排列 - 洛谷 | 计算机科学教育新生态 题目难度&#xff1a;普及 解题思路&#xff1a;这道题和之前做过的一道题很像&#xff0c;举一反三就行 相似题目&#xff1a;P1827 [USACO3.4] 美国血统 American Heritage - 洛谷 |…

创意型广告如何配音梨花声音研修院退费

张弛播音5天训练营靠谱吗&#xff0c;在当今竞争激烈的广告市场中&#xff0c;创意型广告以其独特的构思和表现形式脱颖而出。而配音作为广告的重要组成部分&#xff0c;对于创意型广告的成功起着至关重要的作用。 在为创意型广告配音之前&#xff0c;首先要深入理解广告的创意…

探索 Python 应用的分层依赖:解决 UOS 环境中的 libvirt-python 安装问题

探索 Python 应用的分层依赖&#xff1a;解决 UOS 环境中的 libvirt-python 安装问题 背景Python 版本升级 问题描述原因分析与解决方案 Python 应用的分层依赖&#xff1a;安装与部署的视角libvirt-python的分层依赖尝试的解决方案 使用编译好的 .whl 文件"嫁接"整个…

SpringBoot+ENC实现密钥加密及使用原理

?? 作者&#xff1a; ?? 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 ?? 社区&#xff1a; Java技术栈交流 ?? 主题&#xff1a; SpringBootENC实现密钥加密及使用原理 创作时间&#xff1a; 2024年06月23日 目录 前言1、整合SpringBoot 1.1、POM…

多源多汇流网络的等价转换与证明

多源多汇流网络的等价转换与证明 引言流的性质和定义推广转换方法等价性证明伪代码与C代码实现结论引言 在经典的流网络问题中,我们通常考虑的是单源单汇(即一个源节点和一个汇节点)的网络流。然而,在实际应用中,我们经常会遇到具有多个源节点和多个汇节点的情况。本文将…

如何制作“优美”PPT

目录 1.免费PPT模板网站&#xff1a; 2.免费有较好质量的图片网站&#xff1a; 免费图片资源 免费透明PNG图片资源&#xff1a; 免费icon图片资源&#xff1a; 3.选择好的图片&#xff1a; 图片底色 4.要与不要 千万不要&#xff1a; 一定要&#xff1a; 6.一些建议…

R中利用ggplot2绘制气泡图

闲来无事&#xff0c;整理了一下自己的绘图笔记&#xff0c;顺便分享到CSDN上。 一、介绍 气泡图&#xff08;Bubble Plot&#xff09;是一种常用的数据可视化方法&#xff0c;用于展示三个变量之间的关系。气泡图的特点是通过气泡的大小、颜色和位置来表达数据中的多维信息。…

腾讯新版滑块识别/滑块识别

最新的腾讯滑块也是进行了一小部分更新&#xff0c;滑块也变的非常千奇百怪。 之前写的处理图像的方法可能太粗糙&#xff0c;有的背景图无法识别&#xff0c;可以在模板匹配之前&#xff0c;加个图像处理。 with open(f"./img/sprite_{random_num}.png", "rb&…

Oracle系统性能监控工具oswatcher演示

1、关于 OSW OSWatcher 的使用符合 Oracle 的标准许可条款&#xff0c;并且不需要额外的许可即可使用&#xff01;&#xff01;&#xff01;&#xff01; OSWatcher (oswbb) 是一种 UNIX shell 脚本的集合&#xff0c;主要用于收集和归档操作系统和网络的度量&#xff0c;以便…

PowerShell install 一键部署postgres17

postgres 前言 PostgreSQL 是一个功能强大的开源对象关系数据库系统,拥有超过 35 年的积极开发经验 这为其赢得了可靠性、功能稳健性和性能的良好声誉。 通过官方文档可以找到大量描述如何安装和使用 PostgreSQL 的信息。 开源社区提供了许多有用的地方来熟悉PostgreSQL, 了…

Elasticsearch vs 向量数据库:寻找最佳混合检索方案

图片来自Shutterstock上的Bakhtiar Zein 多年来&#xff0c;以Elasticsearch为代表的基于全文检索的搜索方案&#xff0c;一直是搜索和推荐引擎等信息检索系统的默认选择。但传统的全文搜索只能提供基于关键字匹配的精确结果&#xff0c;例如找到包含特殊名词“Python3.9”的文…

【Qt在线安装器】不能下载Qt5

qt在线下载不显示以前的版本时&#xff1a; 勾选”Archive“&#xff0c;点击”筛选“ 然后就会显示出QT5的版本&#xff0c; 按流程下载即可

【Unity高级】如何获取着色器(Shader)的关键词

在动态设置Shader时&#xff0c;会需要通过EnableKeyword, DisableKeyword来完成。但一个Shader有哪些关键词呢&#xff1f;Unity的文档中并没有列出来&#xff0c;但我们可以通过遍历Shader的KeywordSpace来查看。 1. 代码如下 using UnityEngine;public class KeywordExamp…