如何将字典转换为数组

时间:2015-08-06 01:34:03

标签: ios arrays swift dictionary

我希望将字典转换为数组,方法是将字典的每个[String : Int]显示为数组中的字符串。

例如:

var myDict: [String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]

我知道myDict.keys.arraymyDict.values.array,但我希望它们一起显示在一个数组中。这就是我的意思:

var myDictConvertedToArray = ["attack 1", "defend 5", "block 12"]

提前致谢。

5 个答案:

答案 0 :(得分:32)

您可以使用for循环遍历字典键/值对来构建数组:

var myDict: [String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]

var arr = [String]()

for (key, value) in myDict {
    arr.append("\(key) \(value)")
}

注意:字典无序,因此您的数组顺序可能不符合预期。

Swift 2 及更高版本中,这也可以使用map完成:

let arr = myDict.map { "\($0) \($1)" }

这也可以写成:

let arr = myDict.map { "\($0.key) \($0.value)" }

如果没有那么短,那就更清楚了。

答案 1 :(得分:12)

在Swift 3中用字典 ONLY VALUES 创建数组的一般情况是(我认为它也适用于旧版本的swift):

let arrayFromDic = Array(dic.values.map{ $0 })

示例:

let dic = ["1":"a", "2":"b","3":"c"]

let ps = Array(dic.values.map{ $0 })

print("\(ps)")

for p in ps {
    print("\(p)")
}

答案 2 :(得分:5)

如果您喜欢简洁的代码并且更喜欢功能方法,则可以使用在密钥集合上执行的map方法:

let array = Array(myDict.keys.map { "\($0) \(myDict[$0]!)" })

或者,正如@vacawama所建议的那样:

let array = myDict.keys.array.map { "\($0) \(myDict[$0]!)" }

功能相同

答案 3 :(得分:2)

使用Swift 5

var myDict:[String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]

let arrayValues = myDict.values.map({$0})
let arrayKeys = myDict.keys.map({$0})

答案 4 :(得分:1)

您必须自己从键和值中构建一个新数组。

查看's swift array documentation

  

您可以通过调用数组将新项添加到数组的末尾   追加(_ :)方法:

试试这个:

var myDict:[String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]

var dictArray: [String] = []

for (k, v) in myDict {
    dictArray.append("\(k) \(v)")
}

如果你正在使用Swift 2.0,请查看What's the cleanest way of applying map() to a dictionary in Swift?