在 Clojure 中将元组数组转换为哈希映射

     2023-02-23     216

关键词:

【中文标题】在 Clojure 中将元组数组转换为哈希映射【英文标题】:Convert an array of tuples into a hash-map in Clojure 【发布时间】:2011-05-18 17:47:04 【问题描述】:

我有一个元组数组,其中每个元组是一个 2 元组,带有一个键和一个值。将这个元组数组转换为哈希映射的最干净的方法是什么?

【问题讨论】:

【参考方案1】:

地图是一系列 MapEntry 元素。每个 MapEntry 都是一个键和值的向量。问题中的元组已经采用 MapEntry 的形式,这使事情变得方便。 (这也是为什么into 解决方案很好的原因。)

user=> (reduce conj  [[:a 1] [:b 2]])
:b 2, :a 1

【讨论】:

感谢您的精彩解释!所以只有 2 个元素的向量是 MapEntry,因此 (into [[:a 1] :b 2]) 会起作用,但是 (into ['( :a 1 ) :b 2]) 会不起作用。它收到“java.lang.ClassCastException:clojure.lang.Keyword 无法转换为 java.util.Map$Entry”的错误。我想知道为什么 Clojure 不能在这种情况下以相同的方式处理所有 2 个元素序列。它将使其更加一致。没有的原因是什么?【参考方案2】:
user=> (into  [[:a 1] [:b 2]])
:a 1, :b 2

【讨论】:

请注意,这也适用于二元素数组的数组——您只需在数组参数周围添加一个(map vec ...)(into (map vec an-array-of-two-element-arrays)) 再说一次,你在使用 Clojure 时经常遇到的那些“duh”时刻之一。很好的答案。 不过比较贵。 @MichałMarczyk 我不明白......如果你已经有一个数组数组,为什么要在它们上面映射vec?我认为vec 只是将数组保持原样...... 为什么必须是向量,为什么两个元素列表的列表不起作用?【参考方案3】:
user=> (def a [[:a 4] [:b 6]])
user=> (apply hash-map (flatten a))
:a 4, :b 6

【讨论】:

flatten 对于这个问题来说太过分了。您可以利用 MapEntry(键和值的向量)形式的元组。 永远不要在这样的情况下使用flatten:如果它们恰好是数据结构,它也会很高兴地扁平化所有键和值!【参考方案4】:

假设“tupel”表示“二元数组”:

(reduce 
  (fn [m tupel] 
      (assoc m 
            (aget tupel 0) 
            (aget tupel 1))) 
   
  array-of-tupels)

【讨论】:

不错。如果您的(对 OP)“数组”实际上是一个 seq,而不是 (aget t n),您可以使用 (t n),这有点漂亮。 (t n) 不适用于序列。它与向量有关。但是你可以简单地使用(into array-of-vectors) 而不是reduce

java示例代码_在java中将哈希映射转换为json

java示例代码_在java中将哈希映射转换为json 查看详情

在Ruby中将数组转换为哈希的最佳方法是啥

】在Ruby中将数组转换为哈希的最佳方法是啥【英文标题】:WhatisthebestwaytoconvertanarraytoahashinRuby在Ruby中将数组转换为哈希的最佳方法是什么【发布时间】:2010-09-0713:30:00【问题描述】:在Ruby中,给定以下形式之一的数组...[apple,1,... 查看详情

如何在 Clojure 中将 XML 转换为 edn?

】如何在Clojure中将XML转换为edn?【英文标题】:HowtoconvertXMLtoedninClojure?【发布时间】:2021-05-0700:55:25【问题描述】:我是Clojure的新手,想将我拥有的XML转换为edn对象。我读取的XML文件:<Vehicle><Model>Toyota</Model><Col... 查看详情

如何在 Clojure 中将字符的 LazySeq 转换为字符串?

】如何在Clojure中将字符的LazySeq转换为字符串?【英文标题】:HowcanIconvertaLazySeqofCharacterstoaStringinClojure?【发布时间】:2010-12-1320:30:24【问题描述】:假设我有一个java.lang.Character之类的LazySeq(\\b\\\\!\\/\\b\\\\%\\1\\9\\/\\.\\i\\%\\$\\i\\space... 查看详情

Clojure:如何将映射条目的惰性序列转换为结构映射?

】Clojure:如何将映射条目的惰性序列转换为结构映射?【英文标题】:Clojure:Howdoyoutransformalazyseqofmapentriesintoastructmap?【发布时间】:2012-06-1623:39:20【问题描述】:我是clojure的新手,一直在使用enlive来转换html文档的文本节点。我... 查看详情

如何将火花数据帧数组转换为元组

...e【发布时间】:2019-08-1903:55:57【问题描述】:如何在scala中将spark数据帧转换为2的元组?我尝试在前导函数的帮助下分解数组并创建一个新列,以便我可以使用两列来创建元组。为了使用前导功能,我需要一列作为排序依据,我... 查看详情

在Ruby中将嵌套哈希键从CamelCase转换为snake_case

】在Ruby中将嵌套哈希键从CamelCase转换为snake_case【英文标题】:ConvertingnestedhashkeysfromCamelCasetosnake_caseinRuby【发布时间】:2012-02-0104:15:51【问题描述】:我正在尝试构建一个API包装器gem,但在将哈希键从API返回的JSON转换为更Rubyish... 查看详情

如何在python中将元组列表转换为元组的元组[重复]

】如何在python中将元组列表转换为元组的元组[重复]【英文标题】:Howtoconvertlistoftuplestotupleoftuplesinpython[duplicate]【发布时间】:2017-07-3001:50:40【问题描述】:我正在尝试将元组列表转换为元组元组,我做错了,请帮助解决此问题... 查看详情

在 Spark 中将元组转换为矩阵

】在Spark中将元组转换为矩阵【英文标题】:TransformtupletomatrixinSpark【发布时间】:2020-08-1123:02:59【问题描述】:我有一个看起来像这样的元组和值的rdd列表。有成千上万种不同的配对。(A,B),1(B,C),2(C,D),1(A,D),1(D,A),5我想将元组值对... 查看详情

如何在 Python 中将元组的元组转换为 pandas.DataFrame?

】如何在Python中将元组的元组转换为pandas.DataFrame?【英文标题】:Howtoconverttupleoftuplestopandas.DataFrameinPython?【发布时间】:2016-02-1512:00:00【问题描述】:没有冒犯,如果问题太基本。如果您需要更多信息,请告诉我。我正在寻找... 查看详情

在 C# 中将字典映射到数组的最快方法

】在C#中将字典映射到数组的最快方法【英文标题】:FastestwaytomapDictionarytoarrayinC#【发布时间】:2019-08-0817:51:18【问题描述】:将具有整数索引的字典转换为数组以使数组索引为字典索引的最快方法是什么?您可以假设Dictionary包... 查看详情

如何在 Swift 中将元组转换为 AnyObject

】如何在Swift中将元组转换为AnyObject【英文标题】:HowtoconvertTupletoAnyObjectinSwift【发布时间】:2015-01-2517:31:52【问题描述】:以下代码编译错误:Error:(112,20)type\'(String,Int)\'doesnotconformtoprotocol\'AnyObject\'funcmyMethode()aMethodeThatICanNotChang... 查看详情

在Python中将列表转换为元组[重复]

】在Python中将列表转换为元组[重复]【英文标题】:ConvertinglisttotupleinPython[duplicate]【发布时间】:2018-10-1416:56:57【问题描述】:>>>list=[\'a\',\'b\']>>>tuple=tuple(list)>>>list.append(\'a\')>>>print(tuple)(\'a\', 查看详情

如何在Ruby中将两个字符串转换为两个数组

】如何在Ruby中将两个字符串转换为两个数组【英文标题】:HowtoconverttwostringsintoanarrayoftwoinRuby【发布时间】:2022-01-1008:15:19【问题描述】:我希望从哈希中提取键和值。我设法检索数据,但格式错误。我正在执行以下操作:@messa... 查看详情

在 Python 中将 MySQLdb 返回从元组转换为字符串

】在Python中将MySQLdb返回从元组转换为字符串【英文标题】:ConvertMySQLdbreturnfromtupletostringinPython【发布时间】:2012-03-3008:48:15【问题描述】:我是MySQLdb的新手。我需要从存储在MySQL中的预定义数据库中读取值。我的问题是收集值... 查看详情

在 Powershell 中将字符串转换为哈希表

】在Powershell中将字符串转换为哈希表【英文标题】:ConvertaStringintoaHashtableinPowershell【发布时间】:2021-12-3009:45:55【问题描述】:我的要求有点特别,但很容易理解。我得到了一个字符串,我想将其用作哈希表,但我做不到,我... 查看详情

如何在 Perl 中将简单的哈希转换为 json?

】如何在Perl中将简单的哈希转换为json?【英文标题】:HowtoconvertasimplehashtojsoninPerl?【发布时间】:2012-01-1719:59:55【问题描述】:我正在使用下面的代码来编码一个简单的哈希useJSON;my$name="test";my$type="A";my$data="1.1.1.1";my$ttl=84600;@rec... 查看详情

Perl,将数字键哈希转换为数组

】Perl,将数字键哈希转换为数组【英文标题】:Perl,convertnumerically-keyedhashtoarray【发布时间】:2011-02-2320:04:45【问题描述】:如果我在Perl中有一个包含完整和连续整数映射的哈希(即,从0到n的所有键都映射到某个东西,除此之... 查看详情