【问题标题】:Elegant way of turning Dictionary or Generator or Sequence in Swift into an Array?将 Swift 中的字典、生成器或序列转换为数组的优雅方式?
【发布时间】:2014-06-09 15:39:22
【问题描述】:

有没有一种优雅的方法可以将字典(或序列或生成器)转换为数组。我知道我可以通过如下循环来转换它。

var d = ["foo" : 1, "bar" : 2]
var g: DictionaryGenerator<String, Int> = d.generate()

var a = Array<(String, Int)>()

while let item = g.next() {
    a += item
}

我希望有类似 Python 的简单转换的东西:

>>> q = range(10)
>>> i = iter(q)
>>> i
<listiterator object at 0x1082b2090>
>>> z = list(i)
>>> z
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 

【问题讨论】:

  • Array(d.generate()) 我认为有效。我知道有一个对字典的调用,它可以用作数组初始值设定项,为您提供一个元组数组。
  • 我尝试了 Array(d.generate()) 和许多其他排列。它绝对行不通。 :-(
  • 我会挖掘一下我的旧答案并回复你。
  • Array(d) 看起来它会给你一个元组数组。

标签: swift


【解决方案1】:

数组的+ 运算符将接受一个序列,因此您可以编写

var d = ["foo" : 1, "bar" : 2]
var a = [] + d

我认为生成器不可能有类似的事情

【讨论】:

  • +1,我喜欢它......但大卫的解决方案感觉有点干净(不那么神奇)
【解决方案2】:

只需将它传递给数组的 init:

var dict = ["foo" : 1, "bar" : 2]
var arr = Array(dict)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2018-11-26
    • 2013-06-03
    • 2018-02-26
    相关资源
    最近更新 更多