Arrays 如何从数组字典中的整数数组中获取最大值
我正在尝试获取数组字典中的最大值,还需要获取该数组的键 这就是我获得最大价值的方式:Arrays 如何从数组字典中的整数数组中获取最大值,arrays,swift,dictionary,Arrays,Swift,Dictionary,我正在尝试获取数组字典中的最大值,还需要获取该数组的键 这就是我获得最大价值的方式: 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 for (kind, numbers) in interestingNumbers { for numbe
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
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
您可以使用Swift函数来实现这一点
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
if let value = interestingNumbers.map ({ ($0, $1.max() ?? 0) }).max(by: { $0.1 < $1.1 }) {
print(value.0, value.1) // Square 25
}
现在从元组数组中找到maxInt
if let value = array.max(by: { $0.1 < $1.1 }) {
print(value.0, value.1) //Will print group here it is "Square 25"
}
如果let value=array.max(by:{$0.1<$1.1}){
print(value.0,value.1)//将在此处打印组,它是“Square 25”
}
您可以使用Swift函数进行此操作
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
if let value = interestingNumbers.map ({ ($0, $1.max() ?? 0) }).max(by: { $0.1 < $1.1 }) {
print(value.0, value.1) // Square 25
}
现在从元组数组中找到maxInt
if let value = array.max(by: { $0.1 < $1.1 }) {
print(value.0, value.1) //Will print group here it is "Square 25"
}
如果let value=array.max(by:{$0.1<$1.1}){
print(value.0,value.1)//将在此处打印组,它是“Square 25”
}
为什么不使用元组来保存最大值
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
var largest: (kind: String?, number: Int) = (nil, 0)
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest.number {
largest = (kind, number)
}
}
}
可进一步简化为:
var largest: (kind: String?, number: Int) = (nil, 0)
for (kind, numbers) in interestingNumbers {
let max = numbers.max() ?? 0
if max > largest.number {
largest = (kind, max)
}
}
另一种方法是首先将值展平为(种类、编号)
序列:
let flattened = interestingNumbers
.map { (kind, numbers) in numbers.map { (kind, $0) } }
.joined()
let largest = flattened.max(by: { $0.1 < $1.1} )
print(largest)
let=interestingNumbers
.map{(种类,数字)在数字中.map{(种类,$0)}
.加入
设max=flatted.max(by:{$0.1<$1.1})
打印(最大)
或者您可以认识到,每个数组中只有最大值才是最重要的,因此:
let largestPerKind = interestingNumbers
.map { (kind, numbers) in (kind, numbers.max() ?? 0) }
let largest = largestPerKind.max(by: { $0.1 < $1.1} )
print(largest)
让largestPerKind=感兴趣的数字
.map{(种类,数字)在(种类,数字.max()??0)}
设max=largestPerKind.max(by:{$0.1<$1.1})
打印(最大)
为什么不使用元组来保存最大值
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
var largest: (kind: String?, number: Int) = (nil, 0)
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest.number {
largest = (kind, number)
}
}
}
可进一步简化为:
var largest: (kind: String?, number: Int) = (nil, 0)
for (kind, numbers) in interestingNumbers {
let max = numbers.max() ?? 0
if max > largest.number {
largest = (kind, max)
}
}
另一种方法是首先将值展平为(种类、编号)
序列:
let flattened = interestingNumbers
.map { (kind, numbers) in numbers.map { (kind, $0) } }
.joined()
let largest = flattened.max(by: { $0.1 < $1.1} )
print(largest)
let=interestingNumbers
.map{(种类,数字)在数字中.map{(种类,$0)}
.加入
设max=flatted.max(by:{$0.1<$1.1})
打印(最大)
或者您可以认识到,每个数组中只有最大值才是最重要的,因此:
let largestPerKind = interestingNumbers
.map { (kind, numbers) in (kind, numbers.max() ?? 0) }
let largest = largestPerKind.max(by: { $0.1 < $1.1} )
print(largest)
让largestPerKind=感兴趣的数字
.map{(种类,数字)在(种类,数字.max()??0)}
设max=largestPerKind.max(by:{$0.1<$1.1})
打印(最大)
我会在字典值中使用max方法,并从结果元组值中获取最大值:
if let result = interestingNumbers.max(by: {$0.value.max() ?? 0 < $1.value.max() ?? 0}),
let maxValue = result.value.max() {
print(result.key) // "Square\n"
print(result.value) // "[1, 4, 9, 16, 25]\n"
print(maxValue) // 25
}
如果let result=interestingNumbers.max(by:{$0.value.max()??0<$1.value.max()??0}),
设maxValue=result.value.max(){
打印(result.key)/“Square\n”
打印(result.value)/“[1,4,9,16,25]\n”
打印(最大值)//25
}
我会在字典值中使用max方法,并从结果元组值中获取最大值:
if let result = interestingNumbers.max(by: {$0.value.max() ?? 0 < $1.value.max() ?? 0}),
let maxValue = result.value.max() {
print(result.key) // "Square\n"
print(result.value) // "[1, 4, 9, 16, 25]\n"
print(maxValue) // 25
}
如果let result=interestingNumbers.max(by:{$0.value.max()??0<$1.value.max()??0}),
设maxValue=result.value.max(){
打印(result.key)/“Square\n”
打印(result.value)/“[1,4,9,16,25]\n”
打印(最大值)//25
}
简单而优雅:)@IvensDenner谢谢伙计:)简单而优雅:)@IvensDenner谢谢伙计:)非常直接谢谢。尽管我不明白你所说的展平方法中发生了什么…@Timi.O第一步生成了一个2元组数组[(“Prime”,2),(“Prime”,3),…],[(“Fibonacci”,1),(“Fibonacci”,1)…],…]
,(.joined()
)调用将其展平为一个平面数组[(“Prime”,2),(“Prime”,3)(“Fibonacci”,1),(“Fibonacci”,1)…]
非常直截了当的感谢。虽然我不明白你所说的展平方法中发生了什么…@Timi.O第一步生成一个2元组数组[(“Prime”,2),(“Prime”,3),…],[(“Fibonacci”,1),…]
,(.joined()
)调用将其展平为一个平面数组[(“Prime”,2),(“Prime”,3),…,(“Fibonacci”,1),(“Fibonacci”,1)…]