ios 如何将字典转换为数组

bpzcxfmw  于 2022-12-30  发布在  iOS
关注(0)|答案(5)|浏览(212)

我想把字典转换成一个数组,方法是把字典的每个[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"]
ukqbszuj

ukqbszuj1#

可以使用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)" }

如果不那么短的话也会更清楚。

dauxcl2d

dauxcl2d2#

在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)")
}
uwopmtnx

uwopmtnx3#

如果您喜欢简洁的代码和函数式方法,可以使用在keys集合上执行的map方法:

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

或者,如@vacawama所建议:

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

其功能等同

k4emjkb1

k4emjkb14#

使用Swift 5

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

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

wlp8pajw5#

您必须亲自检查并根据键和值构造一个新数组。
看一看's swift array documentation
可以通过调用数组的append(_:)方法在数组末尾添加新项:
试试这个:

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?

相关问题