मैं दो तेज सरणियों को एक साधारण तेज शब्दकोश में संयोजित करने का प्रयास कर रहा हूं। मैं तेज करने के लिए बेहद नया हूं (लेकिन अजगर की एक अच्छी मात्रा जानता हूं), और कुछ ऐसा आया है जो मुझे लगता है कि अजीब है। जब मैं नीचे दिए गए कोड को चलाता हूं, तो मुझे उम्मीद के मुताबिक एक शब्दकोश मिलता है, हालांकि, अगर मैं कोड को फिर से चलाता हूं, तो कुंजी: मान जोड़े एक अलग क्रम में आते हैं। मुझे पता है कि स्विफ्ट में शब्दकोशों को अनियंत्रित माना जाता है, लेकिन क्या इसका मतलब यह है कि हर बार जब मैं कुंजी के माध्यम से पुनरावृति करता हूं: एक शब्दकोश के मूल्य जोड़े, इन युग्मों का क्रम बदल सकता है? दूसरे शब्दों में, क्या अंतिम शब्दकोश उत्पाद में शब्दकोश को शामिल करने वाले दो प्रारंभिक सरणियों के क्रम को संरक्षित करना असंभव है?


let cities: Array<String> = ["Paris", "Mexico City", "Rome"]
let countries: Array<String> = ["France", "Mexico", "Italy"]

var newCountrydict : Dictionary<String, String> = [:]
for (city,country) in zip(cities,countries){
    newCountrydict[country] = city

}

newCountrydict
0
zhanf 13 मई 2019, 05:06

1 उत्तर

सबसे बढ़िया उत्तर

स्विफ्ट डॉक्स में, "डिक्शनरी" के अंतर्गत:

किसी सरणी में आइटम्स के विपरीत, डिक्शनरी में आइटम्स का कोई निर्दिष्ट क्रम नहीं होता है। आप एक शब्दकोश का उपयोग तब करते हैं जब आपको उनके पहचानकर्ता के आधार पर मूल्यों को देखने की आवश्यकता होती है, ठीक उसी तरह जैसे किसी वास्तविक दुनिया के शब्दकोश का उपयोग किसी विशेष शब्द की परिभाषा को देखने के लिए किया जाता है।

यदि आप तेजी से शब्दकोशों का उपयोग करते हैं तो आदेश को संरक्षित करना संभव नहीं है।

उसी डॉक्स में, यह कहता है:

सरणियों को मूल्यों के संग्रह का आदेश दिया जाता है। सेट अद्वितीय मूल्यों के अनियंत्रित संग्रह हैं। शब्दकोश कुंजी-मूल्य संघों के अनियंत्रित संग्रह हैं।

मेरा सुझाव है कि आप आधिकारिक दस्तावेज़ पढ़ लें।

4
Revanth Kausikan 13 मई 2019, 02:19