首页 > 解决方案 > 如何找到与 x [Swift] 差异最小的字典值

问题描述

使用 Swift,我正在尝试锻炼与此答案相同的复杂过滤器或排序,而是用于字典和它的值而不是数组。我的整数值也可以是任何整数值——没有限制。给定一个不在数组中的整数值(比如 X),我想找到它自己和 X 之间差异最小的数组元素:

let playerGuesses = ["Mike": 432, "Chrissy": 164]
let x = 222

数组版本给出的答案如下:

let closest = numbers.enumerated().min( by: { abs($0.1 - x) < abs($1.1 - x) } )!
print(closest.element) // 7
print(closest.offset) // 2

我如何为字典值完成类似的事情?

标签: swiftdictionaryenumeration

解决方案


基本上是一样的。只需放下enumerated()并使用keyand valuewith closest

let playerGuesses = ["Mike": 432, "Chrissy": 164]
let x = 222
let closest = playerGuesses.min { abs($0.1 - x) < abs($1.1 - x) }
print(closest?.key, closest?.value)

min闭包内部,$x.0是键,$x.1也是值。


推荐阅读