【问题标题】:what does this dictionary iteration mean in swift?这个字典迭代在swift中是什么意思?
【发布时间】:2023-03-06 13:25:01
【问题描述】:

swfit 中的字典和迭代操作

let namesAndScores = ["Anna": 2, "Brian": 2, "Craig": 8, "Donna"; 6]
for key in namesAndScores.keys {
    print("\(key), ", terminator: "")
}
print("")

结果是布赖恩、安娜、克雷格、唐娜,

这个操作在做什么?为什么“终结者:”没有出现在结果中?

【问题讨论】:

    标签: swift dictionary iteration


    【解决方案1】:

    问:这个操作是做什么的?

    下面一行是[String : Int]类型的字典

    let namesAndScores = ["Anna": 2, "Brian": 2, "Craig": 8, "Donna": 6]
    

    接下来,请注意循环中的以下行:

    namesAndScores.keys
    

    这个.keys 属性为我们提供了一个新的数组,它由只是您的字典中的键组成。例如:

    let keys = ["Anna", "Brian", "Craig", "Donna"]
    

    接下来,您只是在上面描述的数组中循环:

    for key in namesAndScores.keys {
        print("\(key), ", terminator: "")
    }
    

    问:为什么“终结者:”没有出现在结果中?

    Terminator 只是一个让您设置打印行终止符的参数。换句话说,它允许您选择在每行之后打印的内容。默认情况下,它的"\n" 为我们提供了一个新行。

    在您的示例中,您有:print("\(key), ", terminator: "")。将打印语句的 终止符 设置为 ""。你只是告诉你的print() 函数打印没有一个尾随换行符。像这样打印您的值:

    布赖恩、安娜、克雷格、唐娜,

    但是,您可以将任何字符串传递给终止符参数,例如:

    print("\(key), ", terminator: " -hi- ")
    

    这会给你这个:

    布莱恩,-hi- 安娜,-hi- 克雷格,-hi- 唐娜,-hi-

    因此,当您只使用常见的print("\(key), ") 而不设置终止符时,您的 terminator 参数将获得一个 default 值,该值相当于:

    print("\(key), ", terminator: "\n") 
    

    这会在新行上打印每个项目,如下所示:

    布赖恩,
    安娜,
    克雷格,
    唐娜,

    根据评论更新:

    问:为什么在结果中 Brian 在 Anna 之前,而 Brian 在之后

    安娜在字典里?

    字典未排序。因此,.keys 的结果数组将处于不可预测的顺序。幸运的是,您只需在 for 循环中添加 .sort(<) 即可对结果数组进行排序。

    for key in namesAndScores.keys.sort(<) {
        print("\(key), ", terminator: "")
    }
    

    打印:

    安娜、布莱恩、克雷格、唐娜,

    【讨论】:

    • 太棒了!!!还有一个问题,为什么在字典中 Brian 在 Anna 之前,而 Brian 在 Anna 之后?
    • 我确实选择了你的答案。并感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 2011-05-28
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多