当前位置: 首页 > 知识库问答 >
问题:

用Swift翻字典

云育
2023-03-14

我正试着翻阅这本字典

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 largestName: String?

for (names, numbers) in interestingNumbers {
    for number in numbers {
        for name in names {
            if number > largest {
                largest = number
                largestName = interestingNumbers(forKey: largest)
            }
        }

    }
}
print(largest)
print(largestName)

但我得到了以下类型的错误:错误:无法调用非函数类型“[String:[Int]]”的值

我不知道我在哪里错过了适当的迭代。请帮忙。谢谢

共有1个答案

单琛
2023-03-14

如果您直接在外部循环中添加名称数字的打印,您将意识到不需要像您这样循环名称并且也没有必要在循环中再次尝试使用字典。

因此我们可以跳过一个循环,直接使用names变量来记住最大值数组的名称。此外,也没有理由循环numbers数组,因为数组有一个max()函数可以使用。

因此代码变成

for (names, numbers) in interestingNumbers {
    if let max = numbers.max(), max > largest {
        largest = max
        largestName = names
    }
}

一种更简单的方法是使用一些高阶函数来获得最大值

interestingNumbers.mapValues({ $0.max() ?? 0 }).max(by: { $0.value < $1.value}) 

这将返回一个元组,可以这样使用

if let tuple = interestingNumbers.mapValues({ $0.max() ?? 0 }).max(by: { $0.value < $1.value})  {
    largest = tuple.1
    largestName = tuple.0
}
 类似资料:
  • 问题内容: 进行UIImage翻转的解决方案是使用Objective-C代码: 但是,imageWithCGImage在Swift中不可用!是否有使用Swift水平翻转图像的解决方案?谢谢! 问题答案: 大多数工厂方法会迅速转换为初始化程序。只要有可用,即使class方法仍然可用,它们也是首选。您可以使用: 用法如下所示:

  • 本文向大家介绍Swift算法实现逐字翻转字符串的方法示例,包括了Swift算法实现逐字翻转字符串的方法示例的使用技巧和注意事项,需要的朋友参考一下 前言 翻转字符串在字符串算法中算是比较常见的,而且被很多公司用作笔试题。”逐字翻转字符串”是翻转字符串的翻版,也是之前Google的面试题,原题是这样的: 简而言之就是:”the sky is blue”—>”blue is sky the” 所以,对

  • 问题内容: 这是我的自定义Segue的代码 我以为这可行,但实际上只有在执行segue后,视图才会改变。我应该怎么做才能使视图在中间出现“翻转”时发生变化? 提前致谢。 问题答案: 从iOS 7开始,我们通常不使用自定义序列为过渡设置动画。我们要么使用标准的模态演示,指定一个(即,可以为模态过渡选择的一些动画的固定列表),要么实现自定义动画过渡。这两个描述如下: 如果仅显示另一个视图控制器的视图,

  • Swift 4中的字典是用于存储相同类型的无序值列表。 Swift 4进行了严格的检查,不允许在字典中输入错误的类型。 Swift 4字典使用称为键的唯一标识符来存储值,通过相同的键引用和查找值。与数组中的项目不同,字典中的项目没有指定的顺序。 当需要根据标识符(键)查找值时,可以使用字典。 字典键可以是整数,也可以是字符串,但它在字典中作为键是唯一的。 如果将创建的字典分配给变量,则它始终是可变

  • Swift 字典用来存储无序的相同类型数据的集合,Swift 字典会强制检测元素的类型,如果类型不同则会报错。 Swift 字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。 和数组中的数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符(键)访问数据的时候使用字典,这种方法很大程度上和我们在现实世界中使用字典查字义的方法一样。 Swift 字典的key

  • 对于Xcode在Swift编程语言指南中给我的这个实验的答案,我有点困惑: 我知道在对字典进行横向转换时,最大的数字被设置为变量,。然而,我不明白为什么Xcode会说被设置了5次,或者1次,或者3次,这取决于每个测试。 当查看代码时,我发现它应该单独在“Prime”中设置6次(2、3、5、7、11、13)。然后,它应该跳过“斐波那契”中的任何数字,因为这些数字都小于最大的数字,而最大的数字当前从“