gpt4 book ai didi

arrays - 我将如何快速对数组中的项目进行分类?

转载 作者:搜寻专家 更新时间:2023-11-01 06:19:43 24 4
gpt4 key购买 nike

在 swift 中,我想对现有数组中的项目进行分类,并将它们相应地放入一个新字符串中。

这是我想做的一个例子:

originalArray = ["hotdog","fries","hotdog","coke","coke","fries","hotdog"]

resultingString = "hotdog x 3, fries x 2, coke x 2"

我该怎么做?

最佳答案

试试这个:

let originalArray = ["hotdog","fries","hotdog","coke","coke","fries","hotdog"]
var dict = [String: Int]()

let resultString = originalArray.reduce(dict) { _, element in
if dict[element] == nil {
dict[element] = 1
} else {
dict[element]! += 1
}
return dict
}
.map { "\($0) x \($1)" }
.joinWithSeparator(", ")

如果想保持数组原来的顺序(即:热狗、薯条、可乐),代码稍微复杂一点:

let originalArray = ["hotdog","fries","hotdog","coke","coke","fries","hotdog"]
var dict = [String: (index: Int, count: Int)]()

let resultString = originalArray.enumerate()
.reduce(dict) { _ , e in
if let value = dict[e.element] {
dict[e.element] = (index: value.index, count: value.count + 1)
} else {
dict[e.element] = (index: e.index, count: 1)
}
return dict
}
.sort { return $0.1.index < $1.1.index }
.map { "\($0) x \($1.count)" }
.joinWithSeparator(", ")

print(resultString)

关于arrays - 我将如何快速对数组中的项目进行分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36299194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com