如何将字典中从一个键到下一个键的所有值相加? [关闭]

2024-07-01

我有一个字典,其中 DateTime.Now.Date 转换为字符串作为键,整数作为值。我需要以某种方式将从一个输入键到下一个键的所有整数相加。它还应该包括开始和结束整数的值。我怎么能这么做呢?另外,我怎样才能将这本词典保存到计算机中,以便当我打开程序时加载相同的词典并继续添加到它?


我的建议是离开DateTime以其自然的形式,让生活变得更轻松

你可以做这样的事情

Given

public static void Serialize(Dictionary<DateTime, int> dictionary, Stream stream)
{
   var writer = new BinaryWriter(stream);
   writer.Write(dictionary.Count);
   foreach (var kvp in dictionary)
   {
      writer.Write(kvp.Key.ToBinary());
      writer.Write(kvp.Value);
   }

   writer.Flush();
}

public static Dictionary<DateTime, int> Deserialize(Stream stream)
{
   var reader = new BinaryReader(stream);
   var count = reader.ReadInt32();
   var dictionary = new Dictionary<DateTime, int>(count);
   for (var n = 0; n < count; n++)
   {
      var key = DateTime.FromBinary(reader.ReadInt64());
      var value = reader.ReadInt32();
      dictionary.Add(key, value);
   }

   return dictionary;
}

Usage

// Create some data
var dictionary = new Dictionary<DateTime, int>();
dictionary.Add(DateTime.Now.AddDays(-10), 34);
dictionary.Add(DateTime.Now.AddDays(-5), 234);
dictionary.Add(DateTime.Now.AddDays(-2), 345);
dictionary.Add(DateTime.Now, 434);

// Example using sum
var sum = dictionary.Where(x => x.Key > DateTime.Now.AddDays(-6) && x.Key < DateTime.Now.AddDays(-1))
            .Sum(x => x.Value);

Console.WriteLine(sum);

// write to file
using (var fileStrem = new FileStream(@"D:\dict.dat", FileMode.Create))
{
   Serialize(dictionary, fileStrem);
}

// Read from file 
using (var fileStrem = new FileStream(@"D:\dict.dat", FileMode.Open))
{
   dictionary = Deserialize(fileStrem);
}

// sanity check
sum = dictionary.Where(x => x.Key > DateTime.Now.AddDays(-6) && x.Key < DateTime.Now.AddDays(-1))
                  .Sum(x => x.Value);


Console.WriteLine(sum);

Output

579
579

Update

Enumerable.Where 方法 (IEnumerable, Func) https://msdn.microsoft.com/en-us/library/bb534803(v=vs.110).aspx

根据谓词过滤值序列。

本质上,您可以在字典上使用 where 子句,因为它基本上只是键值对结构 https://msdn.microsoft.com/en-us/library/5tbh8a42(v=vs.110).aspx

定义可以设置或检索的键/值对。

您可能还想阅读有关 Linq 的内容

语言集成查询 (LINQ) http://%20https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/

Update

是否有可能有一个字典,其键相同,但 他们有不同的价值观?

你最好只使用List<T> https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx在这种情况下

你可以这样做,看看这个问题键值对列表 https://stackoverflow.com/questions/18801466/key-value-pair-list

var list = new List<KeyValuePair<DateTime, int>>() 

然后在您的灭菌方法中只需更改所有出现的

Dictionary<DateTime, int>

to

KeyValuePair<DateTime, int> 

and

List<KeyValuePair<DateTime, int>> 

然后添加

list.Add(new KeyValuePair<DataTime, int>(myDate,ads));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将字典中从一个键到下一个键的所有值相加? [关闭] 的相关文章

  • 在 C++ 中将注册表值设置为宽字符串 (WCHAR)

    我正在尝试在 C 中向注册表添加宽字符串 问题是RegSetValueEx 函数不支持宽字符 仅支持BYTE type BYTE unsigned char WCHAR myPath C exe RegSetValueExA HKEY CU
  • 空别名共享指针是否是无操作删除共享指针的良好替代方案?

    有时我需要shared ptr具有无操作删除器的实例 因为 API 期望shared ptr例如 它想要存储有限的时间 但我得到了一个原始指针 不允许我拥有比我运行的时间更长的时间 对于这种情况 我一直使用无操作删除器 例如 const v
  • 在 C# 中创建新 List 的这三种方式有什么区别?

    这三种创建新的方式有什么区别List
  • C++14 中专门用于数组类型的分配器?

    为什么 c 14 中没有 std allocator 的数组模板专门化 当我自己尝试专门化 std allocator 时 我在实现 Construction 和 destroy 方法时遇到了死胡同 是这个原因吗 那么为什么 std all
  • Microsoft.Graph GetAsync() 无限期挂起

    介绍 我正在开发一个 ASP NET 应用程序 除其他外 它应该从 Azure Active Directory 检索用户 为此 我使用 Microsoft Graph 版本 1 14 0 预览库 可以找到该库here https www
  • 将 wav 文件存储在数组中

    我需要一种快速方法来将 wav 文件的所有样本存储在数组中 我目前正在通过播放音乐并存储来自示例提供程序的值来解决这个问题 但这不是很优雅 从 NAudio 演示中 我有带有此方法的 Audioplayer 类 private ISampl
  • 使用迭代器与索引访问向量元素有什么区别?

    使用迭代器与索引访问向量元素有什么优点 为什么迭代器比索引更好 在索引不可用的情况下 例如 std list 对于 例子 在通用函数接受迭代器的情况下 叫做 编写应该使用的函数模板时 不止一种容器类型 他们的存在是为了创造均匀性在所有容器和
  • 仅仅“抛出”一次捕获有好处吗?

    与一位同事就他将大部分功能包装在 try catch 中的做法进行了 激烈辩论 但 catch 中只有一个 抛出 例如 Private sub foo try Do something catch throw And nothing els
  • C# 我可以访问没有完整限定名称的枚举吗

    我有一个 C 枚举类型 它以非常长的限定名称结尾 例如 DataSet1 ContactLogTypeValues ReminderToFollowupOverdueInvoice 为了便于阅读 如果我可以告诉一个特定的函数只使用名称的最后
  • 在 C++ 中调用函数有多少开销?

    许多文献都谈到使用内联函数来 避免函数调用的开销 但我还没有看到可量化的数据 函数调用的实际开销是多少 即通过内联函数我们可以实现什么样的性能提升 在大多数架构上 成本包括将所有 或部分 或没有 寄存器保存到堆栈 将函数参数推送到堆栈 或将
  • 如何从库调用方法到 C# 控制台

    我在新库中创建了一个方法 这是我的代码 namespace ClassLibrary1 public class Class1 public static bool ISprime int prime if prime lt 2 retur
  • 将 HTML 渲染为图像

    我正在基于动态输入和裁剪图像生成优惠券 并且现在使用 ntml 和 css 显示优惠券 问题是 打印这已成为一个问题 因为打印时背景如何消失以及其他问题 所以我认为最好的解决方案是能够基于html生成图像 或者设置某种接受字符串和图像的模板
  • C# 替换 Byte[] 中的字节

    替换字节数组中的某些字节的最佳方法是什么 例如我有bytesFromServer listener Receive ref groupEP 我可以做BitConverter ToString bytesFromServer 将其转换为可读格
  • “auto_ptr”和 STL 容器:编写错误用法的示例

    读完本教程后提出这个问题 http www cprogramming com tutorial auto ptr html http www cprogramming com tutorial auto ptr html 在那里你可以找到以
  • 如何在调试 C 程序时将 gdb 值转换为 python 数字对象

    我在调试 C 程序时使用 python2 6 的 gdb 模块 并希望根据实例的 Type 将 gdb Value 实例转换为 python 数字对象 变量 例如 把我的C程序SomeStruct gt some float val 1 6
  • 在heroku上运行c++程序

    我正在尝试在 Heroku 上运行 C 程序 我读过这篇文章 但是我没能成功 因为服务器上没有 g 或 gcc 我尝试像这样将 g 下载到服务器上sudo apt get install g 但是我没有root权限 我还尝试将 g 副本复制
  • fread 在 C 中如何工作?

    我有内容为的文本文件 12345678901222344567 然后我用这段代码来读取内容 FILE pFile int c char buffer 256 pFile fopen myfile txt r int a 50 0 fread
  • 如何使用 gcc 的 -I 命令添加递归文件夹

    有没有办法使用 gcc 的 I 命令并通过给出 a 将所有路径添加到搜索路径root目录 我正在尝试使用 gcc E myfile c查看宏展开式 但是myfile c包含不同目录中的一大堆其他头文件 并且因为我在 vim 中执行此命令 所
  • 相当于 C++ 中用于缓冲读取的 python 生成器

    Guido Van Rossum 在此展示了 Python 的简单性article http neopythonic blogspot com 2008 10 sorting million 32 bit integers in 2mb h
  • 如何将特殊字符 (0x80..0x9F) 写入 Windows 控制台?

    我想要这段代码 System Console Out WriteLine il display il代替oil正如我的测试程序中所做的那样 The Console OutputEncoding默认设置为Western European DO

随机推荐

  • Xcode 4 构建设置中缺少下拉列表

    我正在使用 Xcode 4 并且在 构建设置 中所有下拉列表都已消失 我没有下拉列表 而是文本框 例如 请参见此图片 我完全困惑 如何再次启用下拉列表 在 Xcode 中 编辑器 gt 显示值 它对我有用
  • 如何像这样包裹div?

    假设您有一个具有固定高度和重量的 div 在图中是最里面的一个 并且您希望周围的 div 包含它 其外边距为例如1 厘米 你会怎么做 一种方法是使用inline block显示风格 div border 1px solid blue div
  • Hoptoad v.异常 v.异常_通知 v.异常_记录器

    以下哪种异常通知解决方案最好 卓越的 http getexceptional com Hoptoad http hoptoadapp com 异常通知 http github com rails exception notification
  • F# Power 问题接受两个参数均为 bigint

    我目前正在尝试使用 F 在互联网上找到的文章很有帮助 但作为一名 C 程序员 我有时会遇到一些情况 我认为我的解决方案会有所帮助 但实际上没有帮助或只是部分帮助 因此 我对 F 缺乏了解 很可能对编译器的工作原理缺乏了解 可能是我有时感到完
  • Java中无法到达的语句编译错误[重复]

    这个问题在这里已经有答案了 class For1 public static void main String args int a 0 for break System out println a Line 1 a Line 2 我知道第
  • 是否可以自定义keycloak使用的user_entity表?

    我正在尝试使用 keyCloak 进行 SSO 我在keycloak中设置了mysql而不是嵌入式h2数据库 然而 有一个问题 在udemy的讲座上 讲师告诉我们不建议直接处理db table 由keycloak创建 如果业务需求应用程序处
  • Perl:什么时候使用 system() 以及什么时候安装软件包?

    我工作的项目在由系统人员维护的机器上使用 Perl 脚本 安装 Perl 模块等软件包并不是一件容易的任务 您通常必须打电话给有权限的人来执行此操作 等待几天 了解包的 API 然后记住将其安装在每台新安装的配置机器上 多次选择的替代方案只
  • Python字典键(类对象)与多个比较器的比较

    我使用自定义对象作为 python 字典中的键 这些对象有一些默认值hash and eq定义的方法用于默认比较 但在某些功能中我需要使用不同的方式来比较这些对象 那么有什么方法可以覆盖或传递一个新的比较器来仅针对该特定函数进行这些关键比较
  • 从 MySQL 数据库中选择多个字段重复项

    我有一个旧论坛 其中包含具有重复的第一个帖子的线程 可能有不同的回复 我想删除除其中一个线程之外的所有线程 留下观看次数最高的线程 我有以下 SQL 查询来帮助识别重复线程 但我找不到一种方法让它仅列出 xf thread view cou
  • 如何在 React、ES6、Electron 应用程序上使用本机节点模块?

    我有一个 React Electron 应用程序 我希望能够从编译的 ES6 访问本机节点模块 使用 Babel 和 Webpack 例如 当我尝试要求 fs 节点模块访问文件系统时 出现以下错误 ERROR in src app js M
  • Yii 条件关系

    我有一个chat带字段的表 admin TINYINT owner id INTEGER 目标是在 Yii 中建立两个关系 admin gt array self BELONGS TO Admin owner id condition gt
  • 通过 JavaScript 传输事件来调用 :hover 伪类

    这是场景 您有两张图像 它们彼此堆叠在一起 最高阶的 z 索引图像负责处理点击事件 想想 Google 的 Map API 并且是透明的 而下面的图像负责视觉表示 这是一个伪 HTML CSS 表示 div visual container
  • Android + PhoneGap拦截URL(相当于iOS的shouldStartLoadWithRequest)

    我的 PhoneGap 包装的 本地托管的 Sencha Touch 应用程序会进行一些虚假的 URL 回调来与本机包装器进行通信 IE app callback do function a 在iOS中我实现了以下内容 BOOL webVi
  • 从 ASP.NET 插入到 MS Access

    我们正在尝试建立一个专门用于内联网的服务台票务系统 决定使用 Visual Studio 2008 Express 的 ASP NET C 如果需要的话 我们有一个完整版本 没什么花哨的 几页抓取 NTLM 信息 系统信息并将其与问题一起存
  • 手动将行添加到 StreamingHttpResponse (Django)

    我正在使用 Django 的 StreamingHttpResponse 动态传输大型 CSV 文件 根据the docs https docs djangoproject com en 1 11 ref request response
  • SELECT * FROM NEW TABLE 在 Postgres 中等效

    在 DB2 中 我可以执行如下所示的命令来从插入的行中检索信息 SELECT FROM NEW TABLE INSERT INTO phone book VALUES Peter Doe 555 2323 AS t 我如何在 Postgre
  • NSWindow 中的 NSScrollView

    我在 NSWindow 中有一个 NSScrollView 但它似乎被禁用了 它looks就像它会工作一样 但是滚动条是反应迟钝到鼠标或滚轮 当我将完全相同的 NSScrollView 放入新 XCode 项目的窗口中时 它工作得非常完美
  • 如何在 Ionic 中将图像同时放入

    我目前正在开发 Ionic 应用程序 并致力于在 ion header 和 ion content 中实现图像 这是我如何实现的屏幕截图 从屏幕截图中可以看到 离子标题和离子内容内容被隐藏 因为我设置了图像z index到高数字 有人可以建
  • 从表达式创建动态 Linq select 子句

    假设我定义了以下变量 IQueryable
  • 如何将字典中从一个键到下一个键的所有值相加? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个字典 其中 DateTime Now Date 转换为字符串作为键 整数作为值 我需要以某种方式将从一个输入键到下一个键的所有