从字典数组中获取元素并将键保存为字符串,将值保存为字符串

Posted

技术标签:

【中文标题】从字典数组中获取元素并将键保存为字符串,将值保存为字符串【英文标题】:Getting elements from array of dictionary and save the keys as string, and values as string 【发布时间】:2017-09-12 07:12:06 【问题描述】:

我有一个<Int,String> 类型的字典数组,如下所示:

[14: "2", 17: "5", 6: "5", 12: "Ali", 11: "0", 2: "4", 5: "It it it", 15: "5", 18: "2", 16: "5", 8: "2", 13: "4", 19: "4", 1: "2", 4: "12-09-2017 - 9:52"]

我需要单独获取键并将它们保存在一个字符串中,单独获取值并将它们保存在另一个字符串中。

结果应该是这样的:

string key = "12,17,6,12,11,2,5,15,18,16,8,13,19,1,4"
string values = "2,5,5,Ali,0,4,It it ti,5,2,5,2,4,4,2,12-09-2017 - 9:52"

【问题讨论】:

这不是字典数组。那只是一本字典。 【参考方案1】:

字典有一个 keys 和一个 values 属性,它们返回 键/值作为(惰性)集合。对于你刚刚拥有的价值观 加入他们:

let dict = [14: "2", 17: "5", 6: "5", 12: "Ali", 11: "0", 2: "4", 5: "It it it", 15: "5", 18: "2", 16: "5", 8: "2", 13: "4", 19: "4", 1: "2", 4: "12-09-2017 - 9:52"]

let values = dict.values.joined(separator: ",")
// Ali,5,2,It it it,5,0,4,5,4,4,2,12-09-2017 - 9:52,5,2,2

键是整数,必须先转换成字符串:

let keys = dict.keys.map(String.init).joined(separator: ",")
// 12,17,14,5,15,11,13,16,19,2,18,4,6,8,1

顺序未指定,但键和值的顺序相同。

【讨论】:

我正要发布相同的代码。我实际上很惊讶键和值的顺序相互匹配。由于字典没有顺序,我猜想dict.value 的顺序可能与dict.keys 的顺序不同,但在给定的执行中它们是相同的。 @rmaddy:是的,文档指出“当迭代时,键出现在这个集合中的顺序与它们在字典的键值对中出现的顺序相同。”并且值相同,因此只要不修改字典,它们就会匹配。 – 至少这是我的解释,这也在***.com/questions/27353434/dictionary-key-value-order 讨论过。【参考方案2】:

试试这个,这可以重构我敢肯定,这是第一个击中我的逻辑。

let dictionary = [14: "2", 17: "5", 6: "5", 12: "Ali", 11: "0", 2: "4", 5: "It it it", 15: "5", 18: "2", 16: "5", 8: "2", 13: "4", 19: "4", 1: "2", 4: "12-09-2017 - 9:52"]


let arrayKeys = dictionary.map( $0.key)
print(arrayKeys)

var stringValue: String = ""

for value in arrayKeys 
    stringValue.append(value.description)
    stringValue.append(",")

【讨论】:

为什么你通过maping 字典中的所有键得到arrayKeys?有dictionary.keys 可以做你想做的事。 我没有意识到这一点。谢谢@pacification

以上是关于从字典数组中获取元素并将键保存为字符串,将值保存为字符串的主要内容,如果未能解决你的问题,请参考以下文章

Swift:字典键为 CGRect

在 C++ 中获取多个输入文件并将其保存在数组中

使用 Swift 5 - PDFKit 在 iOS 中编辑和保存现有的 pdf 文档

从python字典如何将键和值保存到* .txt文件[关闭]

在 php 中将 XML 文档转换为数组时,有没有办法将其转换回来并将其保存为属性为元素的 XML 文件?

如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中