将计算出的键添加到集合中

2024-01-19

请考虑这个由男人和女人组成的数据集,我根据几个变量在第二个时刻进行过滤:

type ls = JsonProvider<"...">
let dt = ls.GetSamples()

let dt2 = 
dt |> Seq.filter (fun c -> c.Sex = "male" && c.Height > Some 150)

dt2

[{"sex":"male","height":180,"weight":85},
{"sex":"male","height":160" "weight":60},
{"sex":"male","height":180,"weight":85}]

假设我想添加第四个键“体重指数”或“bmi”,其值大致由“体重”/“身高”给出。因此我期望:

[{"sex":"male","height":180,"weight":85, "bmi":(180/85)},
{"sex":"male","height":160" "weight":60, "bmi":(160/60},
{"sex":"male","height":180,"weight":85, "bmi":(180/85)}]

我以为map.Add https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/map.add%5B'key,'value%5D-method-%5Bfsharp%5D可能有帮助。

let dt3 = dt2.Add("bmi", (dt2.Height/dt2.Weight))       

不幸的是,它返回一个错误:

error FS0039: The field, constructor or member 'Add' is not defined

我确信我的代码中还有更多错误,但如果没有这个函数,我实际上无法查找它们。至少我是否正确地处理了这个问题?


遗憾的是,F# 数据类型提供程序并没有让创建 JSON 的修改版本变得特别容易。让这变得困难的是,我们可以从源 JSON 推断出类型,但我们无法“预测”人们可能想要添加什么类型的字段。

为此,您需要访问 JSON 值的底层表示形式并对其进行操作。例如:

type ls = JsonProvider<"""
  [{"sex":"male","height":180,"weight":85},
   {"sex":"male","height":160,"weight":60},
   {"sex":"male","height":180,"weight":85}]""">

let dt = ls.GetSamples()

let newJson = 
  dt
  |> Array.map (fun recd ->
      // To do the calculation, you can access the fields via inferred types 
      let bmi = float recd.Height / float recd.Weight

      // But now we need to look at the underlying value, check that it is
      // a record and extract the properties, which is an array of key-value pairs
      match recd.JsonValue with
      | JsonValue.Record props ->
          // Append the new property to the existing properties & re-create record
          Array.append [| "bmi", JsonValue.Float bmi |] props
          |> JsonValue.Record
      | _ -> failwith "Unexpected format" )

// Re-create a new JSON array and format it as JSON
JsonValue.Array(newJson).ToString()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将计算出的键添加到集合中 的相关文章

  • 单位安全平方根

    我只是想知道如何以与 F 正确交互的方式编写用户定义的平方根函数 sqrt 单位制 http blogs msdn com andrewkennedy archive 2008 09 04 units of measure in f par
  • 在 F# 类型提供程序中发出生成的类型

    我创建了一个简单的生成类型提供程序 它采用重新组织类型的程序集的路径 将它们置于类型提供程序命名空间下 如果您愿意 可以说是内部化 相关代码的链接在这里https github com colinbull Playground https
  • 将 F# 类型保存到数据库

    A lot http gorodinski com blog 2013 02 17 domain driven design with fsharp and eventstore f 文章数推荐 http fsharpforfunandpr
  • 使用 leftOuterJoin,不需要 .DefaultIfEmpty()

    的文档leftOuterJoin MSDN 上的查询表达式 http msdn microsoft com en us library hh225374 aspx通过样本反复暗示 当使用leftOuterJoin on into 你仍然必须
  • 使用不区分大小写的比较从集合中减去记录

    我有一组记录 type Person Name string Age int let oldPeople set Name The Doctor Age 1500 Name Yoda Age 900 与上面的硬编码示例不同 这组数据实际上来
  • F# 中的动态编程

    实现解决问题的动态规划算法的最优雅的方法是什么子问题重叠的问题 http en wikipedia org wiki Overlapping subproblem 在命令式编程中 人们通常会创建一个按问题大小索引的数组 至少在一维 然后算法
  • true 和布尔列表 f# 的长度

    直接使用递归 写一个函数truesAndLength bool list gt int int那 返回列表的长度 在该对的第一个组件中 以及列表的数量 列表中正确的元素 在第二个组件中 你的函数必须只迭代 遍历列表的元素一次 请勿使用 Li
  • 您可以使用 .net core 运行 F# 脚本文件 (.fsx) 吗?

    是否可以使用 net core 运行 fsx 文件 相当于fsharpi在单声道上 它在 NETCore v3 0 或更高版本中开箱即用 cat hello fsx usr bin env fsharpi printfn hello wor
  • 如何在 F# 中进行卷积?

    我想convolve http en wikipedia org wiki Convolution具有离散滤波器的离散信号 信号和滤波器是 F 中的浮点数序列 我能弄清楚如何做到这一点的唯一方法是使用两个嵌套的 for 循环和一个可变数组来
  • 如何使用 WebSharper 在服务器上生成 Google Visualizations 数据

    我的目标是能够在服务器上为 Google Visualizations 生成数据 然后将其作为 java 脚本传递给客户端 以便可以将其呈现为折线图 我下面的示例可以正确编译 但在浏览器中呈现时会产生错误 在服务器上构建 DataCommo
  • 图像分析-光纤识别

    我是图像分析新手 您知道如何以仅获取纤维的方式对该图像进行二值化吗 我尝试过不同的阈值技术等 但没有成功 我不介意应该使用什么工具 但我更喜欢 NET or Matlab PS 我不知道该把答案放在哪里 所以我把它放在StackOverfl
  • 如何在 F# 中打印整个列表?

    当我使用 Console WriteLine 打印列表时 它默认仅显示前三个元素 如何让它打印列表的全部内容 您可以将 A 格式说明符与 printf 一起使用来获得 美化的 列表打印输出 但与对象上的 Console WriteLine
  • 生成尾调用操作码

    出于好奇 我尝试使用 C 生成尾部调用操作码 斐波那契数很简单 所以我的 C 示例如下所示 private static void Main string args Console WriteLine Fib int MaxValue 0
  • 在类型扩展中重载运算符

    好的 所以我基本上尝试将绑定运算符添加到选项类型中 似乎我尝试的所有内容都有一些不明显的警告阻止我这样做 我怀疑这与 NET 类型系统的限制有关 并且可能与类型类无法在用户代码中实现的原因相同 不管怎样 我已经尝试了一些事情 首先 我尝试了
  • 如何在 F# 中定义这种惰性(无限?)数据结构

    我在定义以下简单文本光标时遇到问题 该光标由元组表示 其中第一个元素是当前字符 如果函数获取下一个元素或崩溃 则第二个元素是 let rec nextAt index text if index lt String length text
  • 专家 f# 脚本编译奇怪

    第 209 210 页有一个扩展示例 见下文 我使用的是 F 4 5 总之 我不明白的是 如果我单独键入每个语句 则会有一个声明引发错误 如果我立即提交整个脚本 以及引发错误的声明之后的函数 则一切正常 那么 当我批量提交所有语句时 交互中
  • 为什么我必须将 Async 包装到另一个异步工作流程中并让!它?

    我试图了解 F 中的异步工作流程 但我发现有一部分我真的不明白 下面的代码工作正常 let asynWorkflow async let result Stream TryOpenAsync partition gt Async Await
  • 副作用是纯函数中找不到的一切吗?

    可以肯定地说 以下二分法成立 每个给定的函数是 要么纯粹 或有副作用 如果是这样 函数的 副作用就是纯函数中找不到的任何东西 这很大程度上取决于您选择的定义 可以公平地说 函数是pure or impure 纯函数始终返回相同的结果并且不会
  • 何时使用接口,何时使用高阶函数?

    给定一个具有以下层的 ASP NET MVC 应用程序 UI 视图 CSS Javascript 等 控制器 服务 包含业务逻辑和数据访问 没有单独的数据访问层的原因是我正在使用 SQL 类型提供程序 以下代码可能不起作用 因为它只是原始草
  • 使用异步工作流程并行化的最佳实践

    假设我想抓取一个网页并提取一些数据 我很可能会写这样的东西 let getAllHyperlinks url string async let req WebRequest Create url let rsp req GetRespons

随机推荐

  • 子网格缓存或阻止子网格数据被删除 (jqGrid)

    有没有办法强制 jqGrid 在切换行时不删除子网格数据 我当前加载数据网格的过程如下 1 设置主网格 使用稍后可以使用的 ID 以编程方式设置子网格 2 通过json将数据本地加载到主网格中 3 通过json将数据添加到本地子网格 由于当
  • Wicket 和 CSS 资源

    我环顾四周 找不到将我自己的 CSS 添加到 Wicket 网站项目的傻瓜指南 但在开始之前 我对正确的 java 开发还很陌生 所以当我说 傻瓜指南 时 我是认真的 非常感谢这里对我简单明了的解释 我从这里开始阅读本指南 http wic
  • Spring Integration - 变压器和标头丰富器

    我的情况是这样的 我需要根据邮政编码将消息路由到三个不同的商店 为此 我需要查看邮件标头以查找客户的邮政编码 并执行以下计算 if zip lt 5000 store SJ else if zip gt 6000 store JY else
  • 为什么 Clojure 的多方法比“if”或“case”语句更好

    我花了一些时间试图理解 Clojure 多方法 据我了解 主要的 专业 多方法论点是它们的灵活性 但是 我对为什么多方法比简单的 if 或 case 语句更好的争论感到困惑 请有人解释一下 多态性和过度美化的案例陈述之间的界限在哪里 编辑
  • 了解 Cassandra 的存储开销

    我一直在阅读本节 http www datastax com documentation cassandra 2 0 cassandra architecture architecturePlanningUserData t html查阅
  • 如何以编程方式设置layout_margin? [复制]

    这个问题在这里已经有答案了 我想知道如何使用屏幕高度和宽度以编程方式设置layout marginLeft layout marginTop layout marginBottom 请帮我 谢谢 莫纳利 这是一个例子 改编自这个答案 htt
  • iOS 应用程序在 iOS 12 上编译器生成的代码中崩溃

    我最近发布了一个用 Swift 4 2 编写的 iOS 应用程序的新版本 Crashlytics 报告该应用程序在编译生成的代码中崩溃了 30 多次 我查看了项目中的类 并尝试重现崩溃 但未成功 有谁有办法解决编译器生成的代码中发生的崩溃吗
  • ASP .NET Core 2.0 将“localhost”更改为“主机名”

    我有一个基于MVC框架编写的Web应用程序 它在本地主机和默认端口 51290 上运行得非常好 现在我需要使用我的域名运行它 例如我的主机名 我尝试的是在 applicationhost config 部分添加一行
  • 从后台返回时 AVCaptureSession 失败

    我有一个相机预览窗口 90 的时间都运行良好 然而 有时 当返回我的应用程序时 如果它位于后台 预览将不会显示 这是我在视图加载时调用的代码 void startCamera session AVCaptureSession alloc i
  • SearchView getActionView 返回 null

    前几天还可以用 但是突然就停止了 我只想在某些片段可见时使用操作栏搜索小部件 现在我无法获得SearchView now getActionView总是返回 null 可搜索 xml
  • 使用 php 和 mysql 发送提醒电子邮件而不使用 cron-job?

    我刚刚制作了一个 php 脚本 它将在约会开始前 2 天向网站管理员发送电子邮件提醒 我本来打算自动化脚本来运行 cron 作业 却发现我托管的人 疯狂的域 似乎没有 Cron 作业 有没有办法在没有 cron jobs 的情况下做到这一点
  • 转置没有聚合的行和列

    我有以下数据集 Account Contact 1 324324324 1 674323234 2 833343432 2 433243443 3 787655455 4 754327545 4 455435435 5 543544355
  • 如何在此 Builder 实现中摆脱 instanceof

    The idea 我需要创建命令 命令可以配置参数 并非每个命令都可以接收相同的参数 所以有些必须被忽略 我有一个抽象类 Command 其中定义了一个 Builder 默认情况下 每个附加参数都会抛出 UnsupportedOperati
  • 在 pandas 中使用带有元组列的查询

    我有一个 pandas df 其中一列作为元组 我想用query使用元组的第一个条目对 df 进行子集化 最好的方法是什么 我在 pandas 23 3 Python 3 6 6 MWE import pandas as pd df pd
  • Gitlab-ci.yml 创建合并请求

    我在 DEV 分支中运行以下 gitlab ci yml 文件 目标也为 DEV 由于我无法将 TARGET 指向 MASTER 因此不会自动创建 MR 我想知道是否可以在 gitlab ci 脚本本身中创建合并请求 dev stage d
  • 拉力赛中的速度图[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开展一个项目 从拉力赛中提取数据并创建速度图表 我了解要使用的 REST Web 服务 API 是缺陷 迭代 分层需求和迭代累积
  • 具有 IDisposable 的无限状态机

    假设我有一个无限状态机来生成随机 md5 哈希值 public static IEnumerable
  • 使用 MongoDB 生成的 _ids 作为“秘密数据”(例如,OAuth 令牌)

    是 MongoDB id字段足够随机 不可猜测来充当秘密数据 例如 如果我正在构建服务器端 OAuth 我可以使用 id 作为用户的 OAuth 令牌吗 我想这样做是因为它为数据库提供了清洁性和可索引性 例如 tokens id gt oa
  • IntentService 中未调用 OnHandleIntent()

    我知道这个问题以前曾被问过 但我已经浏览了所有我能找到的答案 但仍然无法解决问题 问题是当 BroadcastReceiver 启动时 不会调用 IntentService onHandleIntent 奇怪的是 构造函数确实运行了 正如我
  • 将计算出的键添加到集合中

    请考虑这个由男人和女人组成的数据集 我根据几个变量在第二个时刻进行过滤 type ls JsonProvider lt gt let dt ls GetSamples let dt2 dt gt Seq filter fun c gt c