Chỉnh sửa từ điển
Thuộc phần Kiến thức nền tảng trong hành trình Ruby của Coddy. Bài học 75 trên 88.
Dictionary không cố định sau khi được tạo. Bạn có thể thêm các cặp khóa-giá trị mới, cập nhật giá trị hiện có và xóa các mục khi chương trình chạy.
Để thêm một cặp khóa-giá trị mới hoặc cập nhật giá trị hiện có, hãy gán giá trị cho khóa bằng dấu ngoặc vuông:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Thêm một cặp khóa (key) và giá trị (value) mới
person["age"] = 26 # Cập nhật giá trị hiện có
puts person # Đầu ra: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Nếu khóa đã tồn tại, giá trị sẽ được thay thế. Nếu khóa chưa tồn tại, một cặp mới sẽ được thêm vào bảng băm.
Để xóa một cặp khóa-giá trị, hãy dùng phương thức delete với khóa bạn muốn xóa:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # In ra: {"name"=>"Alice", "age"=>25}Phương thức delete trả về giá trị đã bị xóa, điều này có thể hữu ích nếu bạn cần sử dụng giá trị đó:
person = {"name" => "Alice", "age" => 25}
removed_age = person.delete("age")
puts removed_age # In ra: 25Nếu bạn thử xóa một khóa không tồn tại, Ruby chỉ trả về nil mà không phát sinh lỗi.
Thử thách
DễĐọc bốn dòng đầu vào:
- Tên học sinh (chuỗi (string))
- Điểm ban đầu (số nguyên (integer))
- Điểm mới cần cập nhật (số nguyên)
- Một cặp khóa-giá trị mới theo định dạng
key:value(ví dụ:subject:Math)
Tạo một hash có tên student với các cặp khóa-giá trị ban đầu sau:
"name"được ánh xạ với tên học sinh"grade"được ánh xạ với điểm ban đầu (dưới dạng số nguyên)
Sau đó, thực hiện các thay đổi sau:
- Cập nhật khóa
"grade"bằng giá trị điểm mới - Thêm một cặp khóa-giá trị mới bằng khóa và giá trị từ đầu vào thứ tư (giá trị phải giữ nguyên kiểu chuỗi)
- Xóa khóa
"name"khỏi hash và lưu giá trị đã xóa
In tên đã xóa ở dòng đầu tiên, sau đó in hash cuối cùng ở dòng thứ hai.
Ví dụ, nếu các đầu vào là Alice, 85, 92 và subject:Math, đầu ra sẽ là:
Alice
{"grade"=>92, "subject"=>"Math"}Nếu các đầu vào là Bob, 70, 75 và status:passing, đầu ra sẽ là:
Bob
{"grade"=>75, "status"=>"passing"}Nếu các đầu vào là Charlie, 100, 95 và note:excellent, đầu ra sẽ là:
Charlie
{"grade"=>95, "note"=>"excellent"}Tự làm thử
# Đọc đầu vào
name = gets.chomp
initial_grade = gets.to_i
new_grade = gets.to_i
key_value_pair = gets.chomp
# TODO: Viết code của bạn bên dưới
# 1. Tạo một hash tên 'student' với các khóa "name" và "grade"
# 2. Cập nhật khóa "grade" bằng giá trị điểm mới
# 3. Phân tích key_value_pair rồi thêm vào hash
# 4. Xóa khóa "name" và lưu giá trị vừa xóa
# In ra tên vừa xóa
puts removed_name
# In ra hash cuối cùng
puts studentBài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
4Toán tử phần 2
Toán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giảnToán tử logic phần 3Toán tử logic phần 42Biến và kiểu dữ liệu
Số và biếnKiểu dữ liệu chuỗiKiểu dữ liệu BooleanKiểu dữ liệu SymbolKiểm tra kiểu dữ liệuQuy ước đặt tênÔn tập: tạo biến8Vòng lặp
Vòng lặp for với khoảng giá trịVòng lặp whileThoátTiếp tụcÔn tập: giai thừaVòng lặp timesVòng lặp untilVòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcToán tử moduloPhép tính số học rút gọnÔn tập: Toán cơ bảnToán tử so sánh6Nhập xuất cơ bản
In ra bằng putsIn ra bằng print và pIn ra bằng biếnNhập dữ liệu bằng getsPhương thức chompChuyển đổi kiểu dữ liệuÔn tập: Tính tuổiÔn tập: Đúng hay sai9Phương thức
Định nghĩa phương thứcTham số phương thứcGiá trị trả vềÔn tập: phương thức SigmaÔn tập: phương thức xác thựcGiá trị tham số mặc định15Theo dõi chi tiêu hằng ngày
Tổng quan dự ánThoát chương trìnhTự luyện tập: Trình biên dịch Ruby online