c# - 如何使用 Zip 将不同大小的列表合并到字典中?
问题描述
我在搞乱Zip,我对它的工作原理有点困惑。我无法以我想要的方式得到它。我必须列出如下所示的列表:
List<string> names = new List<string>
{
"Mark", "Chris", "Alex", "Default Name", "Jerilyn"
};
List<string> colors = new List<string>
{
"Green", "Blue", "Red", "Orange"
};
当我在这里使用 Zip 时:
var dict = names.Zip(colors, (k, v) => new { Key = k, Value = v })
.ToDictionary(x => x.Key, x => x.Value);
我得到了输出,Mark -> Green, Chris -> Blue, Alex -> Red, Default Name -> Orange
但我想为所有“默认名称”实例添加一个默认值,所以它会像:
Mark -> Green, Chris -> Blue, Alex -> Red, Default Name -> 'Default Color', Jerilyn -> Orange
但是,我不明白为什么 Zip 只会添加键的前 4 个元素。我知道 Values 只有 4 个值,但我希望所有五个值都在集合中,最后一个条目是 null 或空字符串。这将使更改更容易。
解决方案
这是一个两步过程,因为你不知道"Default Name"
会是什么颜色。
就是这样:
var names = new List<string>
{
"Mark", "Chris", "Alex", "Default Name", "Jerilyn"
};
var colors = new List<string>
{
"Green", "Blue", "Red", "Orange"
};
var map = names.Zip(colors, (n, c) => new { n, c }).ToDictionary(x => x.n, x => x.c);
map = names.ToDictionary(x => x, x => map.ContainsKey(x) ? map[x] : map["Default Name"]);
这给出了:
钥匙 | 价值 ------------ | -------- 马克 | 绿色的 克里斯 | 蓝色的 亚历克斯 | 红色的 默认名称 | 橙子 杰瑞琳 | 橙子
推荐阅读
- react-native - 通过 GraphQL 键检索 AWS Amplify DataStore 记录
- reactjs - 反应 useRef 以专注于下一个渲染的输入字段
- symfony - 如何访问 FormType 类中提交的数据?
- firebase - 如何以最基本的形式获取 Firebase onCall 和异步响应:{"error":{"message":"Bad Request","status":"INVALID_ARGUMENT"}}
- php - ADODB odbc_execute
- javascript - NuxtJS (Vue):如何将帖子列表放入组件或布局中?
- wordpress - 在 wordpress 中更改 index.html
- react-admin - 使用 FormDataConsumer 时表单字段的样式
- javascript - 如何在坐标系中找到菱形半径?Javascript
- python - IndexError:索引 100 超出轴 0 的范围,大小为 100