按值更改字典键
本文关键字:字典 | 更新日期: 2023-09-27 18:23:48
如何在Dictionary
中按值更改键?
我有这样的代码:
public Dictionary<string, int> Groups = new Dictionary<string, int>();
Groups.Add("apple", 0);
我需要这样做:
Groups.Update("0") = "pear"
您很可能不想这样做。这里有一些变量:
-
上一个键值对发生了什么?
apple
是否与pear
一起更改? -
如果
pear
已经存在怎么办?它的价值会怎样? -
如果您有多个具有相同值的密钥,例如
apple => 0
、orange => 0
,会发生什么情况。Update("0") = "pear"
将尝试将两个密钥都设置为pear
,这是不可能的,并且其中一个密钥将消失
如果您仍然确定要执行此操作,那么只需遍历KeyValuePair
并找到Value
为0
的项。然后移除其Key
,并添加具有新密钥和旧值的新密钥=>值对。
var key = "";
foreach (var item in dictionary)
{
if (item.Value == "desired_value")
{
key = item.Key
break;
}
}
dictionary.Remove(key);
dictionary.Add(newKey, "desired_value");
我不认为有一个简单的方法可以做到这一点,但你可以使用LINQ找到密钥,然后删除对:
var key = Groups.Single(p => p.Value == 0).Key;
Groups.Remove(key);
Groups.Add("pear", 0);
这还会为无效键或多对抛出异常。
首先,您必须确保键在字典中是唯一的,基于GetHashCode
和equals方法。
第二:我会删除它的键的值,并创建一些新的值。只需将它们存储在其他变量中即可。
编辑
如果要为行号存储单词列表,请改用:Dictionary<int, IList<string>>
。只是一个提示。这样你就可以通过按键访问一行中的所有单词。