首页 / 知识
关于c#:通过数字索引访问Dictionary.Keys键
2023-04-11 19:07:00

Accessing a Dictionary.Keys Key through a numeric index
我正在使用 现在,我需要访问字典中最后插入的键,但是我不知道它的名称。 显而易见的尝试:
不起作用,因为
我只是想知道是否有类似的课程? 我考虑过使用堆栈,但是只存储一个字符串。 我现在可以创建自己的结构,然后使用 正如@Falanwe在评论中指出的那样,这样做是不正确的:
您不应该依赖于字典中键的顺序。如果需要订购,则应使用此答案中建议的OrderedDictionary。此页面上的其他答案也很有趣。 您可以使用OrderedDictionary。
字典是哈希表,因此您不知道插入顺序! 如果您想知道最后插入的键,建议您将Dictionary扩展为包含LastKeyInserted值。 例如。:
但是,当您使用 为什么不扩展字典类以添加最后一个插入键的属性。像下面这样的东西?
您可以始终这样做:
但是我不推荐它。不能保证最后插入的键将在数组的末尾。 MSDN上的密钥顺序未指定,并且可能会发生变化。在我的简短测试中,它似乎是按插入顺序排列的,但是您最好像堆栈一样构建适当的簿记-正如您所建议的(尽管我认为您并不需要基于您的结构其他语句)或单个变量缓存(如果您只需要知道最新密钥)。
我认为您可以执行以下操作,语法可能有误,有一段时间没有使用C#
还是使用Max而不是Last来获得最大值,我不知道哪个更适合您的代码。 如果将密钥嵌入值中,则可以选择使用KeyedCollection。 只需在密封类中创建一个基本实现即可使用。
因此要替换
万一您决定使用容易破损的危险代码,此扩展功能将根据
最好使用Linq:
我同意帕特里克回答的第二部分。即使在某些测试中似乎保持插入顺序,文档(以及字典和哈希的正常行为)也明确指出未指定顺序。 您只是在根据键的顺序问问题。确保添加您自己的簿记(如Patrick所说,最后添加的键只是一个变量)。另外,不要被字典上的Last和Max之类的所有方法所吸引,因为这些方法可能与键比较器有关(我不确定)。 您对问题的措辞使我相信词典中的int包含该项在词典中的"位置"。从断言不是按添加顺序存储键的断言来看,如果这是正确的话,这意味着keys.Count(如果使用从零开始,则为.Count-1)始终是最后输入的密钥的号码?
如果是正确的话,有什么理由不能代替Dictionary 字典对于使用索引作为参考可能不是很直观,但是您可以对KeyValuePair数组进行类似的操作:
恩。 您还可以使用SortedList及其通用副本。这两个类以及在Andrew Peters回答中提到的OrderedDictionary都是字典类,在其中可以通过索引(位置)和键来访问项目。如何使用这些类,您可以找到:SortedList类,SortedList通用类。
要扩展Daniels的帖子及其对键的评论,由于键始终嵌入在值中,因此您可以使用 然后看起来像这样:
要像前面的示例一样使用它,您需要执行以下操作:
我不知道这是否行得通,因为我非常确定密钥没有按照添加顺序存储,但是您可以将KeysCollection强制转换为列表,然后获取列表中的最后一个密钥...但值得一看。 我唯一想到的另一件事是将密钥存储在查找列表中,然后将密钥添加到列表中,然后再将其添加到字典中……这不太好。 Visual Studio的UserVoice通过dotmore提供了到通用OrderedDictionary实现的链接。 但是,如果您只需要按索引获取键/值对,而不必按键获取值,则可以使用一个简单的技巧。声明一些通用类(我称之为ListArray),如下所示:
您也可以使用构造函数声明它:
例如,您从文件中读取了一些键/值对,并且只想按照它们被读取的顺序存储它们,以便稍后通过索引获取它们:
您可能已经注意到,在ListArray中不一定只需要一对键/值。项数组可以是任何长度,例如锯齿状数组。 |
最新内容
相关内容
python怎么对数字进行取整
python怎么对数字进行取整,数字,培训,小数,方法,模块,部分,整数,本文,下面,表示,本文梳理了python中对数字进行取整的方法,有需要的小伙伴可以python判断两个字典是否相同
python判断两个字典是否相同,培训,字典,两个,相同点,做法,下面,之前,以上,解决方案,内部,python自带的数据结构dict非常好用,之前不知道怎么比python判断键在不在字典里
python判断键在不在字典里,培训,字典,浮点,存在,整数,字符串,方法,列表,以上,更多,python3中采用in方法#判断字典中某个键是否存在arr={"intpython怎么判断某一对象是否为字典
python怎么判断某一对象是否为字典,培训,名称,代码,情况,类型,实例,元素,字典,函数,对象,我们经常需要在Python代码中确定某个实例是什么类型python判断字符是否为字母和数字
python判断字符是否为字母和数字,数字,培训,字母,字符串,字符,空格,方法,都会,分号,大小写,在使用python语言中的字符串方法时,可以使用它们判python如何判断python字典的key是
python如何判断python字典的key是否存在,培训,第一,通用,字典,方法,结果,函数,属性,做法,上面,判断python字典中key是否存在的两种方法今天来python怎么判断key是否在字典中
python怎么判断key是否在字典中,培训,第一,通用,字典,方法,结果,函数,属性,做法,里面,在python中,判断某个key是否在字典中,一般有两种通用做法python字典添加值的方法
python字典添加值的方法,培训,上海市,字典,方法,下面,对象,以上,存在,操作,全部,python字典添加值的方法对于字典的操作,本篇介绍的是在其中添python字典中添加新的键值
python字典中添加新的键值,代码,培训,字典,坐标,子弹,实例,元素,以上,提示,结构,python字典中添加新的键值1、字典是动态结构,可以随时添加新python输入三个数字从小到大排序
python输入三个数字从小到大排序,数字,培训,整数,从小到大,错误,继续,方法,提示,用户,函数,python输入三个数字从小到大排序1、说明使用list.python输入数字变成月份
python输入数字变成月份,时间,数字,基数,培训,当月,流程,结果,年份,函数,时间差,python输入数字变成月份1、思路说明可计算给定区间的时间差,pythonupdate更新字典的方法
pythonupdate更新字典的方法,培训,字典,方法,参数,数据类型,内容,语法,实例,对象,以上,python中update更新字典的方法说明1、字典中的update(