我有一个类似的基本字典列表:
let fanFlow: [Int: String] = [100: "25 m/s", 350: "34 m/s", 420: "42 m/s"]
我正在努力使它如果我在这些数字的中间有一个值,它将向上舍入到字典列表中的下一个最大数字整数。
例如:如果我的值为“250”,它会将其向上舍入到列表中的下一个数字,即“350”,返回“34 m / s”。
试图谷歌这个,找不到任何可以帮助我的东西。 任何帮助都会很棒!
谢谢!
答案 0 :(得分:1)
怎么样:
let fanFlow = [100: "25 m/s", 350: "34 m/s", 420: "42 m/s"]
func nextHighest(n: Int) -> String? {
return fanFlow
.keys
.filter { $0 > n }
.minElement()
.map { fanFlow[$0]! }
}
nextHighest(250) // "34 m/s"
或者,在Swift 1.2中:
let fanFlow = [100: "25 m/s", 350: "34 m/s", 420: "42 m/s"]
func nextHighest(n: Int) -> String? {
let higher = fanFlow.keys.filter { $0 > n }.array
return higher.isEmpty ? nil : fanFlow[minElement(higher)]!
}
答案 1 :(得分:1)
let fanFlow: [Int: String] = [100: "25 m/s", 350: "34 m/s", 420: "42 m/s"]
let fanFlowKeys = fanFlow.keys.array.sorted(<)
func getFanFlow(input:Int) -> String {
for key in fanFlowKeys {
if input <= key {
return fanFlow[key]!
}
}
return ""
}
getFanFlow(250) // "34 m/s"