【问题标题】:Creating an array of keys from a key value pair array从键值对数组创建一个键数组
【发布时间】:2019-01-01 23:46:50
【问题描述】:

最初我对一个返回键值对数组的字典进行排序,并试图将其转换为字典,当我被告知字典的顺序是随机的,因此我所做的事情是无用的。我正在尝试将此键值对数组转换为仅包含键的数组,并且想知道该怎么做。这是我的代码:

    let posts = ["post1" : 3, "post2" : 41, "post3" : 27]

    let sortedPS = posts.sorted { $1.1 < $0.1 }

posts 是一个字典,sortedPSArray&lt;(key: String, value: Int)&gt; 类型,据我所知,它是一个键值对数组/元组数组。 sortedPS 应该是一个元组数组,如下所示:

    ["post2" : 41, "post3" : 27, "post1" : 3]

我想要一个如下所示的数组:

    ["post2", "post3", "post1"]

请告诉我如何从sortedPS 获取密钥并生成一个数组。

【问题讨论】:

    标签: ios arrays swift keyvaluepair


    【解决方案1】:

    您可以使用以下短代码从字典中获取所有键。

    let posts = ["post1" : 3, "post2" : 41, "post3" : 27]
    
    let sortedPS = posts.sorted { $1.1 < $0.1 }
    
    let keys = sortedPS.map { $0.key } // ["post2", "post3", "post1"]
    

    【讨论】:

    • 给出 2 个错误:“不能在具有显式参数的闭包内使用匿名闭包参数”和“无法将 'String' 类型的值转换为预期的参数类型 '((key: String, value : Int)) 抛出 -> _'"
    • 请检查我更新的代码,并确认您遵循此
    • 现在工作,看起来我使用的是括号而不是括号。感谢您的帮助。
    【解决方案2】:

    捷径:

    print(Array(posts.keys))
    print(Array(posts.values))
    Result:
    ["post2", "post3", "post1"]
    

    【讨论】:

      猜你喜欢
      • 2018-02-13
      • 2016-12-31
      • 2015-06-29
      • 1970-01-01
      • 2019-01-26
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多