【问题标题】:how to print string in a dictionary on swift?如何快速在字典中打印字符串?
【发布时间】:2017-06-21 21:55:38
【问题描述】:

如何打印这本词典中最大数的类型?

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 typeoflargest:String = " "
for (kind, numbers) in interestingNumbers {
    for type in kind.characters {
        for number in numbers {
            if number > largest {
                largest = number
                typeoflargest = String(type)
            }
        }
    }
}
print(largest)
print(typeoflargest)

输出:

25
S

为什么我只有第一个字符“S”而不是“Square”?

【问题讨论】:

  • 为什么投反对票?这是一个明确的问题。它显示了相关代码。它显示实际和期望的输出。你还想要什么让选民失望?

标签: swift string dictionary character


【解决方案1】:

没有理由迭代kind 字符串的字符。只需执行以下操作:

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 typeoflargest:String = ""
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            typeoflargest = kind
        }
    }
}
print(largest)
print(typeoflargest)

输出:

25
正方形

【讨论】:

    【解决方案2】:

    替代方法:

    let interestingNumbers = [
        "Prime": [2, 3, 5, 7, 11, 13],
        "Fibonacci": [1, 1, 2, 3, 5, 8],
        "Square": [1, 4, 9, 16, 25],
    ]
    
    let maximum = interestingNumbers
        .map{ type, numbers in return (type: type, number: numbers.max()!) }
        .max(by: { $0.number < $1.number })!
    
    print(maximum.type, maximum.number)
    

    解释:

    首先,获取每个类别的最大元素。通过迭代字典来做到这一点,将数字数组中的值映射到最大数字(在它们各自的数组内),产生:

    [
        (type: "Square", number: 25),  // 25 is the max of [1, 4, 9, 16, 25]
        (type: "Prime", number: 13),   // 13 is the max of [2, 3, 5, 7, 11, 13]
        (type: "Fibonacci", number: 8) // 8 is the max of [1, 1, 2, 3, 5, 8]
    ]
    

    然后,通过比较它们的数字,得到最大的类型/数字对,产生结果:

    (type: "Square", number: 25) // 25 is the max of 25, 13, 8
    

    【讨论】:

    • @rmaddy 我还在调整它,当我有更最终的答案时我会这样做
    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2014-11-06
    • 2019-10-26
    • 2023-03-30
    相关资源
    最近更新 更多