2016-09-26 7 views
0

das Wörterbuch vor:Swift - Karte Wörterbuch basiert auf Tasten

var dict : [String : String]! = ["12" : "This", "5" : "is", "52" : "a", "42" : "Test"] 

var keys = Array(dict.keys) 

var values : [String]! = [String]() 
for (_, key) in keys.enumerated() { 
    values.append(dict[key]!) 
} 

Will Array(dict.values) wie oben das gleiche Ergebnis liefern?

Gibt es eine einfachere Möglichkeit, die dictionary basierend auf keys und nicht enumerate diese zuzuordnen?

Vorstellung, weil ich die gleiche keys verwenden möchten different dictionaries für ihre Werte abzubilden.

PS: Es muss nicht sortiert werden.

EDITED

Betrachten Sie die json unter:

{ 
    "data": { 
    "forecast_numbers": { 
     "15": 6397822, 
     "20": 985448, 
     "76": 2499160, 
     "130": 4480161 
    }, 
    "actual_numbers": { 
     "15": 6344454, 
     "20": 1645125, 
     "76": 1644789, 
     "130": 2451170 
    }, 
    "accuracy": { 
     "15": -0.83415887469204, 
     "20": 66.941837621062, 
     "76": -34.18632660574, 
     "130": -45.288350128489 
    }, 
    "xaxis": { 
     "15": "ABC", 
     "20": "BCD", 
     "76": "BNM", 
     "130": "NNN" 
    } 
    } 
} 

I forecast_numbers & actual_numbersvalues gegen xaxis Werte darstellen möchten. Möchten Sie wissen, ob es einen anderen Weg als enumerated() gibt, um die Werte zu erhalten?

+4

Ich habe keine Ahnung, was Sie zu tun versuchen, aber Sie würden genau das gleiche Ergebnis mit 'Werte lassen = Array (dict.values) '. –

+0

Möchten Sie alle Werte aus dem Wörterbuch abrufen? –

+0

@MartinR Sie sollten das eine Antwort geben. – Akaino

Antwort

2

Ihr Zweck ist es nicht klar genug mit der aktualisierten Beispiel zu sehen, aber wenn man nur die Werte für den gleichen Schlüssel jeder sammeln möchten, können Sie so etwas schreiben:

let data = json["data"] as! [String: [String: Any]] 
let result = data["xaxis"]!.map {($0.key, $0.value, data["forecast_numbers"]![$0.key]!, data["actual_numbers"]![$0.key]!)} 
print(result) //->[("130", NNN, 4480161, 2451170), ("20", BCD, 985448, 1645125), ("76", BNM, 2499160, 1644789), ("15", ABC, 6397822, 6344454)] 

Angenommen, Sie haben das JSON Daten in json als [String: AnyObject].

(vorausgesetzt, Sie auch Ihre json nie einige gebrochene Daten enthält. Scheinbar zu viel ! verwenden.)

+0

Danke. war auf der Suche nach etwas Ähnliches :) – Sreejith