Tin tức và phân tích của tất cả các thiết bị di động

10 phương pháp từ điển Python hữu ích

Bạn muốn tìm hiểu cách làm việc với từ điển Python? Hướng dẫn này sẽ hướng dẫn bạn các phương pháp từ điển Python để đọc, sửa đổi và các thao tác phổ biến khác với từ điển Python.

Chúng ta sẽ bắt đầu bằng cách xem lại những kiến ​​thức cơ bản về từ điển Python, sau đó tạo một từ điển mẫu và sửa đổi nó bằng các phương pháp từ điển của Python.

Hãy bắt đầu…

Tổng quan về từ điển Python

Từ điển là cấu trúc dữ liệu tích hợp trong Python. Nó cho phép bạn lưu trữ các phần tử theo cặp khóa-giá trị – bằng cách xác định mối liên kết hoặc ánh xạ giữa khóa và giá trị.

Các khóa trong từ điển phải là duy nhất (để chúng có thể được băm). Bạn có thể sử dụng phím này để tìm kiếm một giá trị hoặc sử dụng các phương thức có sẵn (bạn sẽ tìm hiểu chúng ngay sau đây).

Khi tạo từ điển python, bạn có thể khởi tạo tất cả các cặp khóa-giá trị hoặc khởi tạo một từ điển trống rồi thêm các cặp khóa-giá trị.

>>> dict1 = {'language':'Python','like':True}
>>> type(dict1)
<class 'dict'>

# or we can do the following:

>>> dict1 = {}
>>> dict1['language']='Python'
>>> dict1['like']=True

Phương pháp từ điển Python cho các hoạt động phổ biến

Lưu ý: Bạn phải cài đặt phiên bản Python để làm theo các ví dụ về mã 3.7 hoặc mới hơn.

Bạn có thể viết mã cùng nhau trong python REPL. Hoặc theo dõi trong trình soạn thảo python trực tuyến newsblog.pl.

>>> person = {'name':'Alice',
...           'city':'Portland',
...           'interest':'Programming',
...           'profession':'Developer'
...           }

Bây giờ chúng ta đã khởi tạo từ điển Python, hãy bắt đầu khám phá các phương pháp từ điển khác nhau.

Nhận khóa từ điển bằng phím()

Một trong những thao tác phổ biến khi làm việc với từ điển Python là truy cập tất cả các khóa, giá trị và cặp khóa-giá trị. Để lấy các khóa từ điển, bạn có thể gọi phương thức key() như sau:

>>> person.keys()
dict_keys(['name', 'city', 'interest', 'profession'])

Lấy giá trị từ điển với value()

Phương thức value() trả về tất cả các giá trị và rất hữu ích khi bạn muốn xử lý thêm các giá trị đó.

Hãy truy cập tất cả các giá trị trong từ điển mọi người:

>>> person.values()
dict_values(['Alice', 'Portland', 'Programming', 'Developer'])

Nhận các cặp khóa-giá trị với items()

Phương thức items() trả về danh sách các bộ giá trị khóa. Vì vậy, việc gọi phương thức này trên từ điển mọi người sẽ trả về danh sách các bộ giá trị khóa-giá trị:

>>> person.items()
dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), 
           ('profession', 'Developer')])

Nhận bản sao nông với copy()

Phương thức copy() trả về một bản sao rút gọn của từ điển Python.

>>> person_cpy = person.copy()

Ở đây user_cpy là bản sao nông của từ điển người. Hãy sửa đổi bản sao này bằng cách cập nhật khóa ‘name’ thành ‘Bob’.

>>> person_cpy['name'] = 'Bob'
>>> person_cpy

Bây giờ nếu bạn xem qua nội dung từ điển, bạn sẽ thấy “tên” đó đã được cập nhật thành “Bob”.

{
 'name': 'Bob', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Tuy nhiên, từ điển người ban đầu vẫn chưa được sửa đổi.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Đặt giá trị mặc định với setdefault()

Khi làm việc với từ điển Python, thông thường bạn sẽ gặp KeyError nếu khóa không có trong từ điển. Đây là một ví dụ khi chúng tôi đang cố truy cập vào khóa “age”:

>>> person['age']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Bạn có thể tránh những lỗi như vậy bằng cách sử dụng các phương thức setdefault() và get() tích hợp thay vì truy cập các giá trị như trên.

Phương thức setdefault(key) trả về một lệnh[‘key’] nếu khóa có trong dict.

>>> person.setdefault('name')
'Alice'

Khi không có khóa, nó sẽ thêm khóa vào từ điển với giá trị mặc định là Không.

>>> person.setdefault('address')
>>> person

Trong trường hợp này, khóa “địa chỉ” không có trong từ điển người. Nhưng chúng ta có thể thấy rằng nó đã được thêm vào với giá trị mặc định là Không.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': None 
}

Bây giờ chúng ta có thể đặt khóa ‘địa chỉ’ thành một số địa chỉ:

>>> person['address'] = "10, xyz street"
>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street' 
}

Bạn cũng có thể chỉ định một giá trị trong lệnh gọi phương thức như sau:

>>> person.setdefault('country','USA')
'USA'
>>> person

Vì khóa “quốc gia” ban đầu không có trong từ điển con người nên chúng tôi thấy rằng nó đã được thêm giá trị “Hoa Kỳ”.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Nhận một giá trị cụ thể với get()

Phương thức get() trả về giá trị tương ứng với khóa. Nó cũng tùy ý nhận một giá trị mặc định khác được trả về nếu không tìm thấy khóa trong từ điển.

Khi chúng tôi cố gắng truy cập giá trị khóa ‘tên’, chúng tôi nhận được ‘Alice’ vì khóa này hiện diện cá nhân:

>>> person.get('name')
'Alice'

Từ điển mọi người không có khóa “gpa”. Vì vậy, khi chúng tôi cố gắng lấy giá trị của nó, chúng tôi không nhận được gì trong REPL python. Tuy nhiên, nếu bạn in giá trị, bạn sẽ nhận được Không.

>>> person.get('gpa')
>>> print(person.get('gpa'))
None

Nhưng nếu bạn cung cấp giá trị mặc định tùy chọn, chúng tôi sẽ nhận được giá trị đó thay vì Không có.

>>> person.get('gpa','not found')
'not found'

Tuy nhiên, phương thức get() không thêm khóa “gpa” vào từ điển.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Hiểu setdefault() so với get()

Mặc dù cả hai phương thức setdefault() và get() đều có thể được sử dụng để xử lý KeyError, hãy tóm tắt những điểm khác biệt so với những gì chúng ta đã học được:

  • dict.setdefault(key,val) thêm khóa có giá trị mặc định là val. Nếu val không được cung cấp, khóa sẽ được thêm với giá trị mặc định là Không.
  • dict.get(key,val) trả về giá trị tương ứng với khóa trong từ điển Python. Nếu không có khóa, trả về val (nếu được cung cấp) hoặc Không có – nhưng không thêm khóa vào từ điển.

Bạn cũng có thể sử dụng defaultdict trong python để xử lý KeyErrors tốt hơn.

Cập nhật nội dung của từ điển bằng hàm update()

Bạn có thể cập nhật từ điển python hiện có bằng cách sử dụng cặp khóa-giá trị từ một từ điển khác. Bạn cũng có thể cập nhật nội dung của bất kỳ python nào có thể lặp lại bằng phương thức update().

Hãy định nghĩa từ điển more_details. Tiếp theo, chúng ta cập nhật từ điển mọi người với nội dung từ từ điển more_details:

>>> more_details = {'hobby':'singing', 'likes':'sweets'}
>>> person.update(more_details)

Dựa trên kết quả đầu ra bên dưới, chúng ta thấy rằng các phím “sở thích” và “thích” đã được thêm vào từ điển mọi người.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing', 
 'likes': 'sweets'
}

Xóa mục được thêm lần cuối bằng popitem()

Phương thức từ điển popitem() có thể được sử dụng để loại bỏ cặp khóa-giá trị được thêm vào cuối cùng.

>>> person.popitem()
('likes', 'sweets')

Như bạn có thể thấy, việc gọi popitem() trên từ điển gồm nhiều người sẽ trả về khóa-giá trị (“lượt thích”, “đồ ngọt”) – mục cuối cùng được thêm vào từ điển.

Nó cũng loại bỏ cặp khóa-giá trị. Bạn có thể xác nhận điều này bằng cách xem nội dung của từ điển:

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing'
}

Xóa một mục từ điển bằng pop()

Chúng ta biết rằng phương thức từ điển popitem() sẽ loại bỏ và trả về cặp khóa-giá trị cuối cùng trong từ điển Python. Tuy nhiên, đôi khi có thể cần phải xóa các mục khác ngoài cặp khóa-giá trị được thêm gần đây nhất.

Để làm điều này, chúng ta có thể sử dụng phương thức từ điển pop() của Python: sử dụng .pop(key) trong từ điển sẽ trả về giá trị tương ứng với khóa và cũng xóa cặp khóa-giá trị khỏi từ điển.

Đây là một ví dụ:

>>> person.pop('hobby')
'singing'

Sau khi chọn mục tương ứng với phím “sở thích”, chúng tôi nhận thấy nó không còn trong từ điển.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Nếu chúng ta truyền một khóa không tồn tại, chúng ta sẽ gặp ngoại lệ KeyError như sau:

>>> person.pop('age')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Ở đây chúng ta gặp phải một ngoại lệ KeyError vì khóa “age” không có trong từ điển mọi người.

Không giống như phương thức list pop() vốn loại bỏ mục cuối cùng theo mặc định, phương thức từ điển pop() yêu cầu một khóa. Nếu bạn không chỉ định khóa trong phương thức, lỗi sẽ xảy ra.

>>> person.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 argument, got 0

Xóa tất cả các mục từ điển bằng clear()

Các phương thức từ điển pop() và popitem() loại bỏ một cặp khóa-giá trị mỗi lần. Nếu bạn muốn xóa tất cả các mục khỏi từ điển, bạn có thể sử dụng phương thức clear().

>>> person.clear()
>>> person
{}

Như bạn có thể thấy, việc gọi clear() trên từ điển mọi người sẽ xóa tất cả khóa-giá trị và từ điển mọi người hiện trống.

Tổng hợp các phương pháp từ điển python

Dưới đây là tổng quan nhanh về các phương pháp từ điển Python mà chúng tôi đã học.

MethodSyntaxDescriptionkeys()dict1.keys()Trả về khóa dict1values()dict1.values()Trả về giá trị dict1items()dict1.items() Trả về danh sách tất cả khóa-giá trị trong dict1copy()dict1.copy() Trả về một bản sao đơn giản của dict1setdefault() dict1.setdefault(key, default_value) – Thêm một khóa có giá trị mặc định tùy chọn làm khóa cho dict1 (nếu không được chỉ định, mặc định là Không có)
– Trả về dict1[key] nếu khóa đã có sẵn get()dict1.get(key,default_value) – Trả về dict1[key] nếu khóa có trong dict1; Ngược lại, nó trả về default_value
– Nếu khóa không có trong dict1 và không có default_value nào được chỉ định, trả về Noneupdate()dict1.update(iterable1)Updates dict1 trong cặp khóa-giá trị từ iterable1popitem()dict1.popitem() Xóa và trả về cặp khóa-giá trị cuối cùng từ dict1pop()dict1 .pop(key) – Loại bỏ và trả về giá trị tương ứng với khóa: dict1[key]
– Tăng KeyError nếu khóa không có trong dict1clear()dict1.clear() Xóa tất cả các mục từ dict1

Ứng dụng

Bạn đã học cách sử dụng các phương pháp phổ biến để thực hiện các thao tác đọc, cập nhật và xóa trong từ điển Python. Ngoài ra, bạn cũng đã tìm hiểu cách sử dụng các phương thức get() và setdefault() để xử lý các ngoại lệ KeyError bằng cách trả về một giá trị mặc định và thêm mục nhập giá trị mặc định vào từ điển Python tương ứng. Bạn cũng có thể sắp xếp từ điển python theo khóa hoặc giá trị.

Sau đó kiểm tra danh sách các phương pháp danh sách python hữu ích. Chúc mừng mã hóa!