2017-09-12 21 views
0

などの値が、私はこのようなタイプ<Int,String>の辞書の配列を持っている:辞書の配列から要素を取得し、文字列としてキーを保存し、文字列

[14: "2", 17: "5", 6: "5", 12: "Ali", 11: "0", 2: "4", 5: "It it it", 15: "5", 18: "2", 16: "5", 8: "2", 13: "4", 19: "4", 1: "2", 4: "12-09-2017 - 9:52"] 

私は一人で、キーを取得し、それらを保存する必要があります文字列、および値だけを別の文字列に保存します。

結果は、次のようになります。

string key = "12,17,6,12,11,2,5,15,18,16,8,13,19,1,4" 
string values = "2,5,5,Ali,0,4,It it ti,5,2,5,2,4,4,2,12-09-2017 - 9:52" 
+3

これは辞書の配列ではありません。それはちょうど1つの辞書です。 – rmaddy

答えて

4

辞書(遅延)コレクションとして キー/値を返すkeysvalues性質を有しています。値については、あなたはそれらに参加する を持っている:

let dict = [14: "2", 17: "5", 6: "5", 12: "Ali", 11: "0", 2: "4", 5: "It it it", 15: "5", 18: "2", 16: "5", 8: "2", 13: "4", 19: "4", 1: "2", 4: "12-09-2017 - 9:52"] 

let values = dict.values.joined(separator: ",") 
// Ali,5,2,It it it,5,0,4,5,4,4,2,12-09-2017 - 9:52,5,2,2 

キーは整数であり、最初の文字列に変換する必要があります。

let keys = dict.keys.map(String.init).joined(separator: ",") 
// 12,17,14,5,15,11,13,16,19,2,18,4,6,8,1 

順序が指定されていないが、キーと値のために同じ。

+0

私はちょうど同じコードを投稿しようとしていました。私は実際には、キーと値の順序がお互いに一致するのに驚いていました。辞書には順序がないので、 'dict.value'の順序は' dict.keys'の順序と異なるかもしれないと推測しましたが、それらは与えられた実行内で同じです。 – rmaddy

+1

@rmaddy:はい、ドキュメンテーションは次のように述べています。* "反復処理すると、キーはディクショナリのキーと値のペアで発生するのと同じ順序でこのコレクションに表示されます。" *と同じ値になり、辞書は変更されていないためです。 - 少なくともそれは私の解釈ですが、これもhttps://stackoverflow.com/questions/27353434/dictionary-key-value-orderで議論されました。 –

0

が、これは、これが私を襲った最初の論理で、私は確信してリファクタリングすることができ、これを試してみてください。

let dictionary = [14: "2", 17: "5", 6: "5", 12: "Ali", 11: "0", 2: "4", 5: "It it it", 15: "5", 18: "2", 16: "5", 8: "2", 13: "4", 19: "4", 1: "2", 4: "12-09-2017 - 9:52"] 


let arrayKeys = dictionary.map({ $0.key}) 
print(arrayKeys) 

var stringValue: String = "" 

for value in arrayKeys { 
    stringValue.append(value.description) 
    stringValue.append(",") 
} 
+0

辞書のすべてのキーを 'map'して' arrayKeys'を得るのはなぜですか?あなたが望むものを正確に行う 'dictionary.keys'があります。 – pacification

+0

私はそれを知らなかった。ありがとう@pacification –

関連する問題