Bắt đầu
Video Tổng Hợp
- Phiên bản ban đầu của tập lệnh, phiên bản thứ 2 và phiên bản thứ 3. Shell xuất ra ở đây
- Từ điển trong Python là một bộ khóa không có thứ tự. cặp giá trị
- Không giống như danh sách, từ điển vốn không có thứ tự. Chìa khóa. các cặp giá trị dường như theo một thứ tự nhất định nhưng nó không liên quan
- Mỗi KHÓA phải là duy nhất, nhưng GIÁ TRỊ có thể giống nhau cho hai hoặc nhiều khóa
- Nếu bạn gán một giá trị cho một khóa thì sau này trong cùng một từ điển có cùng một khóa được gán cho một giá trị mới, giá trị trước đó sẽ bị ghi đè
- Thay vì sử dụng một số để lập chỉ mục các mục [như bạn làm trong danh sách], bạn phải sử dụng khóa cụ thể, e. g. , bringBackDict['Trav']
Tìm hiểu thêm
- Có cách nào để thêm mục mới hoặc thay đổi giá trị của khóa không?
- Có ba phương pháp từ điển để trích xuất dữ liệu nhất định. . keys[] trả về các khóa trong từ điển dưới dạng danh sách và. values[] trả về các giá trị từ điển dưới dạng danh sách. Mặt khác,. items[] trả về cả khóa và giá trị, nhưng dưới dạng danh sách các bộ [khóa, giá trị]
- Từ điển không có thứ tự, nhưng thường thì cần thiết phải áp đặt một thứ tự nhất định [e. g. , chữ cái] khi xử lý các mục từ điển. Bạn đạt được điều này bằng cách sắp xếp các phím. Xem Sắp xếp để biết chi tiết
Khám phá
Từ điển python là một trong những cấu trúc dữ liệu quan trọng được sử dụng rộng rãi trong khoa học dữ liệu và các nơi khác khi bạn muốn lưu trữ dữ liệu dưới dạng cặp khóa-giá trị. Trong bài đăng này, chúng ta sẽ tìm hiểu sâu về từ điển và cách lặp lại từ điển cũng như tìm hiểu cách sắp xếp giá trị từ điển và các hoạt động khác bằng cách sử dụng cấu trúc dữ liệu từ điển
Về cơ bản, một từ điển trong python là một đối tượng ánh xạ trong đó nó ánh xạ một khóa thành một giá trị. Các khóa là các giá trị có thể băm được ánh xạ tới các giá trị. Các khóa là các giá trị tùy ý và bất kỳ giá trị nào không thể băm là các giá trị chứa danh sách hoặc các loại có thể thay đổi khác đều không được sử dụng làm Khóa. Ngay cả việc sử dụng các giá trị số làm khóa cũng không phải là một cách thực hành tốt.
Làm thế nào để tạo một từ điển?
Chúng ta có thể tạo Từ điển bằng phím. các cặp giá trị được phân tách bằng dấu phẩy hoặc sử dụng hàm tạo dict
Sử dụng cặp giá trị khóa được phân tách bằng dấu phẩy
d = {
"name": "Charlie",
"age": 42,
"city": "NYC",
"state": "NY",
"rank": 1.0 }
Sử dụng hàm tạo dict
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
Chuyển đổi hai danh sách thành một từ điển
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
Chuyển đổi danh sách các bộ dữ liệu [Khóa, Giá trị] thành từ điển
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
Điều gì đã thay đổi đối với từ điển trong Python 3. 6
Từ điển đã được đặt hàng trong Python 3. 6 có nghĩa là nó nhớ thứ tự chèn các cặp khóa và giá trị. Điều đó có nghĩa là các đối số từ khóa hiện có thể được lặp lại theo thứ tự tạo của chúng, về cơ bản là triển khai cpython của python
Việc sử dụng bộ nhớ của việc triển khai từ điển mới này cũng sẽ giảm 20-25% mức sử dụng bộ nhớ
Đây là một ví dụ từ danh sách gửi thư của nhà phát triển python để triển khai lệnh mới trong python 3. 6
Tạo một chức năng để lấy các khóa từ điển
def func[**kw]:
print[kw.keys[]]
Gọi hàm trên trong Python 3. 5 trở về trước trả về một dict_keys chưa được sắp xếp. Kiểm tra đầu ra các phím được sắp xếp ngẫu nhiên
func[a=1, b=2, c=3, d=4, e=5]
Đầu ra trong Python 3. 5 trở về trước
dict_keys[['c', 'd', 'e', 'b', 'a']] # Keys are randomly ordered
Gọi chức năng tương tự trong python3. 6 trở lên trả về một dict_keys theo thứ tự như nó đã được truyền trong hàm
Đầu ra trong Python 3. 6 trở lên
dict_keys[['a', 'b', 'c', 'd', 'e']] # Keys are ordered
Lặp lại thông qua một từ điển
Là nhà phát triển python hoặc nhà khoa học dữ liệu, bạn sẽ làm việc với từ điển rất nhiều và có những tính toán hoặc hành động cần được thực hiện trong khi làm việc thông qua các khóa và giá trị từ điển
Trong phần này, chúng ta sẽ xem các cách bạn có thể truy xuất dữ liệu từ từ điển là gì
Python hỗ trợ khái niệm lặp qua các vùng chứa và Trình lặp cần xác định hai phương thức. iter[] và next[]. Thông thường, đối tượng tự xác định phương thức next[], vì vậy nó chỉ trả về chính nó dưới dạng iterator
iter xác định phương thức tiếp theo sẽ được gọi bởi các câu lệnh như for và in để tạo ra mục tiếp theo và next[] sẽ tăng ngoại lệ StopIteration khi không còn mục nào nữa
Hy vọng điều này sẽ làm rõ cách hoạt động của trình vòng lặp trên từ điển
Các phương thức này được sử dụng bởi các câu lệnh for và in, vì vậy điều đó có nghĩa là nếu bạn đặt một từ điển trong vòng lặp for thì nó sẽ tự động gọi phương thức iter[] và lặp qua các phím của từ điển
Lặp lại từ điển bằng cách sử dụng các phím
________số 8
đầu ra
name : charlie
age : 42
city : NYC
state : NY
rank : 1.0
Các đối tượng xem từ điển
Điều này cung cấp một cửa sổ của các mục từ điển và khi bất kỳ mục nào thay đổi trong chính tả thì nó sẽ phản ánh những thay đổi đó trong chế độ xem
Theo tài liệu chính thức của python
Các đối tượng được trả về bởi dict. phím [], chính tả. giá trị [] và dict. items[] là các đối tượng xem. Chúng cung cấp chế độ xem động cho các mục nhập của từ điển, có nghĩa là khi từ điển thay đổi, chế độ xem sẽ phản ánh những thay đổi này
Độ dài của từ điển
Điều này trả về số cặp khóa, giá trị trong từ điển
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
0danh sách các khóa từ điển
hàm keys[] trả về dict_keys[] được gói cùng với danh sách để lấy đối tượng danh sách
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
1đầu ra
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
2danh sách các giá trị từ điển
hàm giá trị [] trả về dict_values [] được gói cùng với danh sách để lấy đối tượng danh sách
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
3đầu ra
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
4Lặp lại các giá trị dict
dict_values là một iterable nên bạn có thể lặp trực tiếp qua các giá trị của từ điển bằng cách sử dụng vòng lặp for
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
5đầu ra
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
6Lặp lại các phím dict
dict_keys có thể lặp lại nên bạn có thể lặp trực tiếp qua các khóa của từ điển bằng cách sử dụng vòng lặp for
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
7đầu ra
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
8Lặp lại khóa, cặp giá trị bằng dict. mặt hàng
Điều này trả về một cặp [khóa, giá trị] là một đối tượng tuple
d = dict[ name= "Charlie", age= 42, city = "NYC", state = "NY",rank = 1.0]
9đầu ra
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
0Từ điển hiểu
Nó là một phần mở rộng cú pháp để hiểu danh sách. Nó tạo ra một đối tượng từ điển và bạn không thể thêm khóa vào từ điển hiện có bằng cách sử dụng đối tượng này
Bạn nhóm biểu thức bằng cách sử dụng dấu ngoặc nhọn và phần bên trái trước từ khóa for biểu thị cả khóa và giá trị, được phân tách bằng dấu hai chấm
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
1đầu ra
{'California'. 'Los Angeles', 'Massachusetts'. 'Boston', 'NY'. 'NYC'}
từ điển lấy chìa khóa
lấy [khóa, mặc định]
Phương thức này trả về giá trị cho khóa nếu khóa có trong từ điển, nếu không mặc định. Nếu không cung cấp mặc định, thì giá trị mặc định là
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
8, do đó phương thức này không bao giờ tăng d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
9Hãy hiểu điều này với một ví dụ nhỏ
Đây là một từ điển của thành phố và các tiểu bang tương ứng
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
2Chúng tôi phải xuất tên tiểu bang khi người dùng vào thành phố
Khi thành phố có trong Dictionary Key
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
3đầu ra
Bạn sống ở bang Bắc Carolina
Khi thành phố không có trong Dictionary Key
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
4đầu ra
Bạn sống ở trạng thái Không
Giải nén từ điển bằng itemgetter
Bạn có thể giải nén từ điển bằng toán tử. itemgetter[] hữu ích nếu bạn muốn lấy các giá trị từ từ điển được cung cấp một loạt khóa
Hãy xem ví dụ dưới đây, chúng tôi đang trích xuất các giá trị của khóa a, b và c bằng cách sử dụng itemgetter
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
5Sắp xếp
Có một số tình huống mà bạn cần sắp xếp từ điển theo khóa hoặc giá trị. Bạn có thể đạt được điều này bằng cách sử dụng hàm sorted[]. Trong phần bên dưới, chúng ta sẽ xem cách sắp xếp từ điển theo khóa và giá trị
nếu bạn đang sử dụng python 3. 6 trở lên thì đừng lo lắng, từ điển được sắp xếp theo cấu trúc dữ liệu và có thể dễ dàng sắp xếp bằng cách sử dụng hàm sorted[] bên trong phần hiểu từ điển
Sắp xếp từ điển theo phím
Bạn có thể chuyển toàn bộ từ điển dict_items làm đối số cho hàm được sắp xếp và nó sẽ trả về danh sách các bộ dữ liệu sau khi sắp xếp có thể được chuyển đổi trở lại từ điển bằng cách sử dụng hàm tạo dict
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
6đầu ra
{'MỘT'. 4, 'B'. 10}
Bạn có thể thấy đầu ra các khóa từ điển được sắp xếp theo thứ tự bảng chữ cái
Sắp xếp từ điển theo giá trị
Bạn cũng có thể sắp xếp từ điển với các giá trị của chúng bằng cách sử dụng hàm sorted[] và một đối số khác, khóa và giá trị của tham số key phải là một hàm nhận một đối số duy nhất và trả về một khóa để sử dụng cho mục đích sắp xếp
Theo mặc định, nó cho kết quả theo thứ tự tăng dần. Bạn có thể xem danh sách các khóa được trả về tại đây dựa trên giá trị của từng khóa tương ứng được sắp xếp theo thứ tự tăng dần
Thứ tự tăng dần
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
7đầu ra
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
8nếu bạn muốn danh sách các khóa theo thứ tự giảm dần ở trên thì hãy thêm một đối số khác có tên là đảo ngược là True và điều này sẽ cung cấp các khóa dựa trên giá trị của chúng được sắp xếp theo thứ tự giảm dần
Thứ tự giảm dần
d = dict[ zip[['name','age','city','state','rank'],['Charlie',42,'NYC','NY',1.0]]]
9đầu ra
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
0liệt kê từ điển
Bạn cũng có thể liệt kê thông qua từ điển và có thể lấy chỉ mục của từng khóa
Trong kết quả cuối cùng, bạn có thể thấy chỉ mục cho từng khóa
Chỉ cần nhớ đ. phím[], d. values[] trả về một đối tượng dict_keys hoạt động giống một tập hợp hơn là một danh sách
Do đó, ra lệnh. các giá trị [] cần được gói trong một danh sách. Bạn có thể thấy trong đoạn mã dưới đây, chúng tôi đã sử dụng danh sách [d. giá trị[]][chỉ mục]
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
1đầu ra
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
2Lọc từ điển
Bạn có thể lọc từ điển bằng cách sử dụng khả năng hiểu từ điển sẽ tạo từ điển mới dựa trên tiêu chí lọc
Trong ví dụ này, chúng tôi đang lọc ra tất cả các cặp khóa-giá trị có giá trị < 500. Từ điển cuối cùng có tất cả các khóa có giá trị lớn hơn 500
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
3đầu ra
{'một'. 1000, 'b'. 3000, 'd'. 542, 'e'. 790, 'f'. 1042}
Cập nhật giá trị từ điển
Phương thức cập nhật sẽ ghi đè lên các khóa hiện có và Cập nhật từ điển bằng các cặp khóa/giá trị
Nó chấp nhận một đối tượng từ điển hoặc một cặp khóa/giá trị có thể lặp lại
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
4đầu ra
{'một'. 1000, 'b'. 3049, 'c'. 100, 'd'. 542, 'e'. 790, 'f'. 1042, ‘g’. 790}
Xóa khóa từ điển
bạn có thể sử dụng del để xóa một khóa và giá trị của khóa đó khỏi từ điển nếu bạn chắc chắn rằng khóa đó tồn tại trong từ điển, nếu không, khóa đó sẽ tăng một
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
9 nếu khóa không có trong bản đồd = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
5đầu ra
{'một'. 1000, 'b'. 3000, 'c'. 100, 'd'. 542, 'e'. 790}
mệnh lệnh. nhạc pop[]
Nếu bạn không chắc chắn về khóa tồn tại trong từ điển thì hãy sử dụng dict. nhạc pop[]
Điều này sẽ trả về d[‘f’] nếu khóa tồn tại trong từ điển và Không có gì khác
Nếu tham số thứ hai không được chỉ định [i. e. đ. pop['f']] và phím không tồn tại, lỗi KeyError xuất hiện
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
6Hợp nhất hai hoặc nhiều từ điển
Bạn có thể sử dụng toán tử giải nén từ điển ** để hợp nhất hai hoặc nhiều từ điển thành một từ điển duy nhất và sau đó bạn có thể lặp lại từ điển mới được hợp nhất này
Đây là một ví dụ
d = dict[[["name","charlie"],["age",42],["city","NYC","state","NY"],["rank",1.0]]]
7đầu ra
{'NYC'. 'NY', 'Boston'. 'Massachusetts', 'Los Angeles'. 'California', 'Charlotte'. 'Bắc Carolina'}
Phần kết luận
Chúng tôi đã đi đến phần cuối của bài viết toàn diện và chi tiết này về lặp qua từ điển. Vì vậy, đây là những gì chúng tôi đã học được cho đến nay thông qua hành trình của chúng tôi thông qua blog này
- Từ điển là gì và nó hoạt động như thế nào và các cách khác nhau để tạo từ điển trong python
- Các đối tượng xem từ điển, tại sao nó quan trọng và bản chất năng động của nó là phản ánh các thay đổi ngay lập tức
- Chức năng lấy từ điển để truy xuất các giá trị từ một từ điển đơn giản và lồng nhau và nó trả về Không có nếu không tìm thấy khóa
- Cách sắp xếp từ điển theo khóa và giá trị theo thứ tự tăng dần và giảm dần
- Liệt kê thông qua một từ điển và lấy vị trí chỉ mục của các khóa được sắp xếp ngay bây giờ sau python 3. 6
- Cuối cùng, các phương pháp khác nhau để cập nhật và xóa khóa từ điển là gì
Tôi đã cố gắng trình bày tất cả các cách có thể để duyệt qua một từ điển và giải thích các cách khác nhau để làm việc với từ điển một cách hiệu quả
Tuy nhiên, nếu có bất cứ điều gì bạn cảm thấy nên được đưa vào bài đăng này hoặc có thể được thực hiện theo cách tối ưu hơn thì vui lòng để lại nhận xét bên dưới