Swift - พจนานุกรม

สวิฟต์ 4 dictionariesใช้เพื่อจัดเก็บรายการค่าประเภทเดียวกันที่ไม่เรียงลำดับ Swift 4 ทำการตรวจสอบอย่างเข้มงวดซึ่งไม่อนุญาตให้คุณป้อนประเภทผิดในพจนานุกรมแม้จะผิดพลาด

พจนานุกรม Swift 4 ใช้ตัวระบุเฉพาะที่เรียกว่า a keyเพื่อจัดเก็บค่าซึ่งสามารถอ้างอิงและค้นหาได้ในภายหลังผ่านคีย์เดียวกัน ต่างจากรายการในอาร์เรย์ไอเท็มในไฟล์dictionaryไม่มีคำสั่งซื้อที่ระบุ คุณสามารถใช้ไฟล์dictionary เมื่อคุณต้องการค้นหาค่าตามตัวระบุ

คีย์พจนานุกรมสามารถเป็นจำนวนเต็มหรือสตริงโดยไม่มีข้อ จำกัด แต่ควรไม่ซ้ำกันภายในพจนานุกรม

หากคุณกำหนดพจนานุกรมที่สร้างขึ้นให้กับตัวแปรตัวแปรนั้นจะเปลี่ยนแปลงได้เสมอซึ่งหมายความว่าคุณสามารถเปลี่ยนแปลงได้โดยการเพิ่มลบหรือเปลี่ยนรายการ แต่ถ้าคุณกำหนดพจนานุกรมเป็นค่าคงที่พจนานุกรมนั้นจะไม่เปลี่ยนรูปและไม่สามารถเปลี่ยนแปลงขนาดและเนื้อหาได้

การสร้างพจนานุกรม

คุณสามารถสร้างพจนานุกรมว่างบางประเภทได้โดยใช้ไวยากรณ์ตัวเริ่มต้นต่อไปนี้ -

var someDict = [KeyType: ValueType]()

คุณสามารถใช้ไวยากรณ์ง่ายๆต่อไปนี้เพื่อสร้างพจนานุกรมว่างซึ่งคีย์จะเป็นประเภท Int และค่าที่เกี่ยวข้องจะเป็นสตริง -

var someDict = [Int: String]()

นี่คือตัวอย่างการสร้างพจนานุกรมจากชุดค่าที่กำหนด -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

การเริ่มต้นตามลำดับ

Swift 4 ช่วยให้คุณสร้างพจนานุกรมจากอาร์เรย์ (คู่คีย์ - ค่า)

var cities = [“Delhi”,”Bangalore”,”Hyderabad”]

คุณสามารถใช้ไวยากรณ์ง่ายๆต่อไปนี้เพื่อสร้างพจนานุกรมว่างซึ่งคีย์จะเป็นประเภท Int และค่าที่เกี่ยวข้องจะเป็นสตริง -

var Distance = [2000,10, 620]

นี่คือตัวอย่างการสร้างพจนานุกรมจากชุดค่าที่กำหนด -

let cityDistanceDict = Dictionary(uniqueKeysWithValues: zip(cities, Distance))

บรรทัดด้านบนของโค้ดจะสร้างพจนานุกรมที่มีเมืองเป็นคีย์และระยะทางเป็นค่า -

การกรอง

Swift 4 ช่วยให้คุณสามารถกรองค่าจากพจนานุกรม

var closeCities = cityDistanceDict.filter { $0.value < 1000 }

หากเรารันโค้ดด้านบนพจนานุกรม closeCities ของเราจะเป็น

["Bangalore" : 10 , "Hyderabad" : 620]

การจัดกลุ่มพจนานุกรม

Swift 4 ช่วยให้คุณสร้างการจัดกลุ่มค่าพจนานุกรม

var cities = ["Delhi","Bangalore","Hyderabad","Dehradun","Bihar"]

คุณสามารถใช้ไวยากรณ์ง่ายๆต่อไปนี้เพื่อจัดกลุ่มค่าของพจนานุกรมตามตัวอักษรตัวแรก

var GroupedCities = Dictionary(grouping: cities ) { $0.first! }

ผลลัพธ์ของโค้ดด้านบนจะเป็น

["D" :["Delhi","Dehradun"], "B" : ["Bengaluru","Bihar"], "H" : ["Hyderabad"]]

การเข้าถึงพจนานุกรม

คุณสามารถดึงค่าจากพจนานุกรมได้โดยใช้ไวยากรณ์ตัวห้อยส่งคีย์ของค่าที่คุณต้องการเรียกคืนภายในวงเล็บเหลี่ยมหลังชื่อพจนานุกรมดังนี้ -

var someVar = someDict[key]

ลองตรวจสอบตัวอย่างต่อไปนี้เพื่อสร้างเริ่มต้นและเข้าถึงค่าจากพจนานุกรม -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someVar = someDict[1]

print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Value of key = 1 is Optional("One")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

การปรับเปลี่ยนพจนานุกรม

คุณสามารถใช้ได้ updateValue(forKey:)วิธีการเพิ่มค่าที่มีอยู่ให้กับคีย์ที่กำหนดของพจนานุกรม วิธีนี้ส่งคืนค่าทางเลือกของประเภทค่าของพจนานุกรม นี่คือตัวอย่างง่ายๆ -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict.updateValue("New value of one", forKey: 1)
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

คุณสามารถแก้ไของค์ประกอบที่มีอยู่ของพจนานุกรมได้โดยกำหนดค่าใหม่ที่คีย์ที่กำหนดดังที่แสดงในตัวอย่างต่อไปนี้ -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict[1]
someDict[1] = "New value of one"
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

ลบคู่คีย์ - ค่า

คุณสามารถใช้ได้ removeValueForKey()วิธีการลบคู่คีย์ - ค่าออกจากพจนานุกรม วิธีนี้จะลบคู่คีย์ - ค่าหากมีอยู่และส่งคืนค่าที่ลบออกหรือส่งคืนค่าศูนย์หากไม่มีค่าอยู่ นี่คือตัวอย่างง่ายๆ -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var removedValue = someDict.removeValue(forKey: 2)

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

คุณยังสามารถใช้ไวยากรณ์ตัวห้อยเพื่อลบคู่คีย์ - ค่าออกจากพจนานุกรมโดยกำหนดค่าเป็น nilสำหรับคีย์นั้น นี่คือตัวอย่างง่ายๆ -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

someDict[2] = nil

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

การทำซ้ำในพจนานุกรม

คุณสามารถใช้ไฟล์ for-in วนซ้ำเพื่อวนซ้ำชุดคู่คีย์ - ค่าทั้งหมดในพจนานุกรมดังที่แสดงในตัวอย่างต่อไปนี้ -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

for (index, keyValue) in someDict.enumerated() {
   print("Dictionary key \(index) - Dictionary value \(keyValue)")
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Dictionary key 2 - Dictionary value Two
Dictionary key 3 - Dictionary value Three
Dictionary key 1 - Dictionary value One

คุณสามารถใช้ได้ enumerate() ฟังก์ชันที่ส่งคืนดัชนีของรายการพร้อมกับคู่ (คีย์ค่า) ดังแสดงด้านล่างในตัวอย่าง -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict.enumerated() {
   print("Dictionary key \(key) - Dictionary value \(value)")
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Dictionary key 0 - Dictionary value (key: 2, value: "Two")
Dictionary key 1 - Dictionary value (key: 3, value: "Three")
Dictionary key 2 - Dictionary value (key: 1, value: "One")

แปลงเป็น Arrays

คุณสามารถแยกรายการคู่คีย์ - ค่าจากพจนานุกรมที่กำหนดเพื่อสร้างอาร์เรย์แยกสำหรับทั้งคีย์และค่า นี่คือตัวอย่าง -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)

print("Print Dictionary Keys")

for (key) in dictKeys {
   print("\(key)")
}
print("Print Dictionary Values")

for (value) in dictValues {
   print("\(value)")
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Print Dictionary Keys
2
3
1
Print Dictionary Values
Two
Three
One

คุณสมบัติการนับ

คุณสามารถใช้แบบอ่านอย่างเดียว count คุณสมบัติของพจนานุกรมเพื่อค้นหาจำนวนรายการในพจนานุกรมดังที่แสดงด้านล่าง -

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]

print("Total items in someDict1 = \(someDict1.count)")
print("Total items in someDict2 = \(someDict2.count)")

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Total items in someDict1 = 3
Total items in someDict2 = 2

ทรัพย์สินที่ว่างเปล่า

คุณสามารถใช้แบบอ่านอย่างเดียว empty คุณสมบัติของพจนานุกรมเพื่อค้นหาว่าพจนานุกรมว่างเปล่าหรือไม่ดังที่แสดงด้านล่าง -

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]
var someDict3:[Int:String] = [Int:String]()

print("someDict1 = \(someDict1.isEmpty)")
print("someDict2 = \(someDict2.isEmpty)")
print("someDict3 = \(someDict3.isEmpty)")

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

someDict1 = false
someDict2 = false
someDict3 = true