LINQ 将 Dictionary 转换为 Dictionary

2024-04-29

我今天心情低落……有谁知道一种快速而优雅的方法来转换字典,使键变成值,反之亦然?

Example:

var originalDictionary = new Dictionary<int, string>() {
    {1, "One"}, {2, "Two"}, {3, "Three"}
};

becomes

var newDictionary = new Dictionary<string, int>();
// contents:  
// { 
//    {"One", 1}, {"Two", 2}, {"Three", 3} 
// };

Use 到字典 http://msdn.microsoft.com/en-us/library/system.linq.enumerable.todictionary.aspx ?

orignalDictionary.ToDictionary(kp => kp.Value, kp => kp.Key);

这有效是因为IDictionary<TKey,TElement>;也是一个IEnumerable<KeyValuePair<TKey,TElement>>;.请注意,如果有重复的值,则会出现异常。

如果您有重复的值,您将需要决定如何处理它们。一种简单的方法是首先按值分组来忽略重复项,然后创建字典。

originalDictionary
.ToLookup(kp => kp.Value)
.ToDictionary(g => g.Key, g => g.First().Key);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ 将 Dictionary 转换为 Dictionary 的相关文章

随机推荐

  • 当线程无法访问所有已用堆时查找 Java 内存泄漏

    我正在研究基于 Java 的大型系统中潜在的内存泄漏 或至少是内存浪费 JVM 运行时的最大堆大小为 5 GB 2 3GB 堆使用量是应用程序的预期基准 可能会有更高的峰值 在我正在调查的过载场景中 堆被填满 使用 Eclipse Memo
  • 如何在 Pygame 中制作边框

    我试图让游戏的某个区域周围有边框 并使用一种尺寸来不断更改我的代码 以便它适用于一种尺寸 这是代码 screen xpos ypos height width border width color def draw borders s x
  • H2O R 中的子集化

    我有一个 h2o 对象 子集的标准 R sub1 lt trans trans Type 1 我在水中也尝试过同样的方法 它不工作 sub1 lt trans trans Type 1 我也尝试过 sub1 lt h2o exec tran
  • ViewPager 具有不同的纵向和横向适配器

    在纵向模式下 我的ViewPager有 3 个片段 A B C 但在横向模式下 它只有 2 个片段 A 和 C 所以我创建了 2 个FragmentStatePagerAdapters 代表每种模式 问题是当屏幕方向改变时 ViewPage
  • 我可以将 Selenium WebDriver 与 Google Cloud Functions 结合使用吗?

    我正在尝试使用 Selenium 构建解决方案 我可以使用 Firebase Functions 通过 Selenium 初始化和加载网页吗 我发现一些资源说 不 然而他们没有给出任何来源 而且他们已经4岁了 在 Cloud Functio
  • nuget 创建两个包文件夹?

    OK 所以我最近重新安装了Windows 10并升级了vs2013 gt vs2015 此时我试图获取几个 nuget 包 我遇到的问题是 我有一个 nuget packages 文件夹 其级别与我的解决方案文件 通过 NuGet conf
  • 如何使用 C# 更新 Active Directory 属性。

    如何使用 C 更新 Active Directory 属性 就我而言 我有以下情况 对于每个用户都有一个WhenCreatedAD 中的属性 但我想要的是 如果whenDate设置的时间少于 30 天info归因于NEW在活动目录中 我怎样
  • uWSGI重启时停机

    每次当我有代码更新时重新启动服务器时 我都会遇到 uwsgi 问题 当我使用 sudo restart account 重新启动 uwsgi 时 停止和启动实例之间存在一个小间隙 导致停机并停止所有当前请求 当我尝试 sudo reload
  • UIAlertController 的警报无法关闭它

    我正在创建警报 但当用户按 确定 时无法将其关闭 我收到以下错误 2017 12 28 07 03 50 301947 0400 Prestamo 691 215874 API 错误 返回 0 宽度 假设 UIViewNoIntrinsic
  • 龙卷风网络和线程

    我是 Tornado 和 Python 线程的新手 我想要实现的目标如下 我有一个龙卷风网络服务器 它接受用户的请求 我想在本地存储一些数据 并定期将其作为批量插入写入数据库 import tornado ioloop import tor
  • 跨浏览器可拉伸圆角,具有语义代码和最少的图像使用。是否可以?

    我知道如果没有 Javascript 或图像 IE 不可能制作圆角 如果禁用 js JS 解决方案将无法工作 所以我想使用图像选项 我需要任何图像 css解决方案来使跨浏览器兼容圆角divminimal 容易制作和纯粹的semantic a
  • C++ Redistributable 14 与 VS2017 C++ Redistributable 冲突

    我重建了一台笔记本电脑 并在此过程中安装了 VS2017 其中包括安装 C 2017 Redistributable x64 14 10 24728 我尝试安装其他使用 C Redist 14 的应用程序 但它们失败并显示错误消息 该产品的
  • 为什么内联声明不是不完整类型?

    考虑下面的代码 struct Foo struct Bar Foo Bar bar Why isn t Bar an incomplete type struct Bar Full definition struct Bar fails t
  • 在heroku上部署git子目录

    我必须从非主分支部署 git 子目录 我看过这个答案 https stackoverflow com questions 7539382 how can i deploy from a git subdirectory and to Her
  • BackupAgent:“无法恢复包...”

    我已经实现了 BackupAgent 如下所述数据备份 http developer android com guide topics data backup html 注册了一个 API 密钥并在我的 Manifest 中声明了 Back
  • 如何在 AWS Glue 中使用 Spark 包?

    我想使用 DatastaxSpark Cassandra 连接器 https mvnrepository com artifact com datastax spark spark cassandra connector 2 12 2 5
  • 如何让我的精灵向鼠标位置发射一个对象?

    对于一个学校项目 我需要通过实现一种向鼠标位置射击 Kunais Shurikens 的方式来完成下面的 pygame 程序 以便能够击中敌人精灵 import pygame import math import random from p
  • 重新排列关联数组的最优雅的方法是什么?

    假设你有一个关联数组 hash Fruit Apple hash Name Jeff hash Car Ford 并且您无法更改这些变量的创建顺序 因此 Car 总是在 Name 等之后添加到数组中 将 Car 添加 移动到关联数组的开头而
  • 基于 Pandas 中的管道分隔列创建多个新列

    我有一个 pandas 数据框 其中有一个管道分隔的列 其中包含任意数量的元素 称为 零件 这些管道串中的元素数量从 0 到超过 10 个不等 所有管道串中包含的唯一元素的数量并不比行数小很多 这使得我无法在创建新列 对于每一行 我想创建一
  • LINQ 将 Dictionary 转换为 Dictionary

    我今天心情低落 有谁知道一种快速而优雅的方法来转换字典 使键变成值 反之亦然 Example var originalDictionary new Dictionary