【问题标题】:How to find the dictionary value with the smallest difference from x [Swift]如何找到与 x [Swift] 差异最小的字典值
【发布时间】:2019-05-15 00:07:27
【问题描述】:

使用 Swift,我正在尝试使用与 this answer 相同的复杂过滤器或排序,但使用的是 字典,它是值而不是数组。我的整数值也可以是任何整数值——没有限制。给定一个不在数组中的整数值(比如 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

我如何为字典值完成类似的操作?

【问题讨论】:

  • 除非我在你的问题中遗漏了什么,否则我会使用几乎相同的代码得到正确的结果(从计算中删除enumerated().,然后使用closest.keyclosest.value

标签: swift dictionary enumeration


【解决方案1】:

基本上是一样的。只需删除enumerated() 并将keyvalueclosest 一起使用。

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 是值。

【讨论】:

  • 非常感谢@rmaddy!后续问题:如何获取每个猜测(字典值)和实际答案(x)之间的差异?
  • 这是一个单独的问题。尝试一些事情。然后,如果需要,发布一个新问题。以map 开头。
  • 很公平,我喜欢你的风格。再次感谢!
猜你喜欢
  • 2017-07-02
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多