swift - 斯威夫特 4.2/5。获取分配给字典中此键的数组中数字的“键”
问题描述
我的代码实际上有效,但我需要打印分配给包含数字(16 - 这是第二大)的数组的 secondLargest 键。
如何访问此密钥?
let interestingNumbers = ["prime": [2,3,5,7,11,13], "fibonacci": [1,1,2,3,5,8], "square": [1,4,9,16,25]]
var largest = 0;
var secondLargest=0
for (kind, numbers) in interestingNumbers{
for number in numbers {
if number>largest {
secondLargest = largest
largest = number
} else if (number > secondLargest && number != largest) {
secondLargest=number
}
}
}
print( "The largest number is: \(largest) ")
print( "The second largest number is: \(secondLargest) and is a\(kind)
kind ")
解决方案
这是使用forEach
和max
/的解决方案max(by:)
var largest = 0;
var secondLargest=0
var savedKind = ""
interestingNumbers.forEach {
if let max = $0.value.max() {
if max > largest { largest = max }
let next = $0.value.max(by: { $0 < $1 && $1 < max }) ?? -1
if next > secondLargest {
secondLargest = next
savedKind = $0.key
}
}
}
print( "The largest number is: \(largest) ")
print( "The second largest number is: \(secondLargest) and is a \(savedKind) kind ")
推荐阅读
- python - 使用 Python OSMnx 保存路线并保持其曲率
- reactjs - redux 自定义 reducer 如何与 Thunk 配合使用
- xml - 使用 Xpath 搜索网站以查找文本部分
- php - 将 Ajax JQuery 选择器保存在数组中
- java - 如何避免java安全信息弹出?
- java - Java Websocket 客户端作为 Servlet (App Engine)
- java - 给定根节点和目标节点的二叉树的总和是多少?
- typescript - 可以弄清楚如何让 TypeScript 对返回的 Promise 感到满意
- haskell - 在 Haskell Stack+Nix 项目中设置 XDG_RUNTIME_DIR
- google-apps-script - Google Script 中的排序规则与 Google Sheets 不同——怎么办?