辞書の各[String : Int]
を配列内の文字列として表示して、辞書を配列に変換します。
例えば:
var myDict: [String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]
私はmyDict.keys.array
とmyDict.values.array
を知っていますが、それらを一緒に配列に表示したいです。ここに私が意味するものがあります:
var myDictConvertedToArray = ["attack 1", "defend 5", "block 12"]
前もって感謝します。
Forループを使用して、辞書のキーと値のペアを反復処理して配列を作成できます。
var myDict: [String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]
var arr = [String]()
for (key, value) in myDict {
arr.append("\(key) \(value)")
}
注:ディクショナリはunorderedであるため、配列の順序は予期したものと異なる場合があります。
Swift 2以降では、これはmap
でも実行できます。
let arr = myDict.map { "\($0) \($1)" }
これは次のように書くこともできます。
let arr = myDict.map { "\($0.key) \($0.value)" }
それほど短くなければより明確です。
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)")
}
簡潔なコードが好きで、機能的なアプローチを好む場合は、キーコレクションで実行されるmap
メソッドを使用できます。
let array = Array(myDict.keys.map { "\($0) \(myDict[$0]!)" })
または、@ vacawamaが示唆するように:
let array = myDict.keys.array.map { "\($0) \(myDict[$0]!)" }
機能的に同等です
キーと値から自分で新しい配列を作成して作成する必要があります。
のSwift配列ドキュメント :をご覧ください。
配列のappend(_ :)メソッドを呼び出すことにより、配列の末尾に新しいアイテムを追加できます。
これを試して:
var myDict:[String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]
var dictArray: [String] = []
for (k, v) in myDict {
dictArray.append("\(k) \(v)")
}
Swiftの辞書にmap()を適用する最もクリーンな方法は何ですか? を使用している場合Swift 2.0: