Từ điển mảng Python

Kể từ phiên bản Python 3. 7, từ điển được đặt hàng. Trong Trăn 3. 6 trở về trước, từ điển không có thứ tự

Từ điển được viết bằng dấu ngoặc nhọn và có các khóa và giá trị

Ví dụ

Tạo và in từ điển

thisdict = {
  "thương hiệu". "Ford",
  "mẫu xe". "Mustang",
  "năm". 1964
}
in[thisdict]

Tự mình thử »

mục từ điển

Các mục từ điển được sắp xếp theo thứ tự, có thể thay đổi và không cho phép trùng lặp

Các mục từ điển được trình bày trong khóa. các cặp giá trị và có thể được gọi bằng cách sử dụng tên khóa

Ví dụ

In giá trị "thương hiệu" của từ điển

thisdict = {
  "thương hiệu". "Ford",
  "mẫu xe". "Mustang",
  "năm". 1964
}
print[thisdict["brand"]]

Tự mình thử »

Có thứ tự hay không có thứ tự?

Kể từ phiên bản Python 3. 7, từ điển được đặt hàng. Trong Trăn 3. 6 trở về trước, từ điển không có thứ tự

Khi chúng tôi nói rằng từ điển được sắp xếp theo thứ tự, điều đó có nghĩa là các mục có thứ tự xác định và thứ tự đó sẽ không thay đổi

Không có thứ tự có nghĩa là các mục không có thứ tự xác định, bạn không thể tham chiếu đến một mục bằng cách sử dụng chỉ mục

có thể thay đổi

Từ điển có thể thay đổi, nghĩa là chúng ta có thể thay đổi, thêm bớt các mục sau khi tạo từ điển

Bản sao không được phép

Từ điển không thể có hai mục có cùng khóa

Ví dụ

Các giá trị trùng lặp sẽ ghi đè lên các giá trị hiện có

thisdict = {
  "thương hiệu". "Ford",
  "mẫu xe". "Mustang",
  "năm". 1964,
  "năm". 2020
}
in[thisdict]

Tự mình thử »

Độ dài từ điển

Để xác định một từ điển có bao nhiêu mục, hãy sử dụng hàm

{'d': 3, 'c': 4, 'b': 5}
4
18

Mục từ điển - Kiểu dữ liệu

Các giá trị trong các mục từ điển có thể thuộc bất kỳ loại dữ liệu nào

Ví dụ

Các kiểu dữ liệu chuỗi, int, boolean và danh sách

thisdict = {
  "thương hiệu". "Ford",
  "điện". Sai,
  "năm". 1964,
  "màu sắc". ["đỏ", "trắng", "xanh"]
}

Tự mình thử »

loại[]

Theo quan điểm của Python, từ điển được định nghĩa là các đối tượng có kiểu dữ liệu 'dict'

Ví dụ

In kiểu dữ liệu của từ điển

thisdict = {
  "thương hiệu". "Ford",
  "mẫu xe". "Mustang",
  "năm". 1964
}
in[type[thisdict]]

Tự mình thử »

Trình tạo dict[]

Cũng có thể sử dụng hàm tạo dict[] để tạo từ điển

Ví dụ

Sử dụng phương thức dict[] để tạo từ điển

thisdict = dict[name="John", age = 36, country = "Na Uy"]
print[thisdict]

Tự mình thử »

Bộ sưu tập Python [Mảng]

Có bốn kiểu dữ liệu tập hợp trong ngôn ngữ lập trình Python

  • Danh sách là một bộ sưu tập được sắp xếp theo thứ tự và có thể thay đổi. Cho phép các thành viên trùng lặp
  • Tuple là một bộ sưu tập được sắp xếp và không thể thay đổi. Cho phép các thành viên trùng lặp
  • Set là một bộ sưu tập không có thứ tự, không thể thay đổi* và không được lập chỉ mục. Không có thành viên trùng lặp
  • Từ điển là một bộ sưu tập được sắp xếp theo thứ tự ** và có thể thay đổi. Không có thành viên trùng lặp

*Các mục trong bộ không thể thay đổi, nhưng bạn có thể xóa và/hoặc thêm các mục bất cứ khi nào bạn muốn

** Kể từ phiên bản Python 3. 7, từ điển được đặt hàng. Trong Trăn 3. 6 trở về trước, từ điển không có thứ tự

Khi chọn một loại bộ sưu tập, sẽ rất hữu ích khi hiểu các thuộc tính của loại đó. Việc chọn đúng loại cho một tập dữ liệu cụ thể có thể đồng nghĩa với việc giữ nguyên ý nghĩa và, điều đó có thể đồng nghĩa với việc tăng hiệu quả hoặc tính bảo mật

Từ điển trong Python tạo thành một nhóm các phần tử ở dạng cặp khóa-giá trị. Một danh sách có thể lưu trữ các phần tử thuộc các loại khác nhau dưới một tên chung và tại các chỉ mục cụ thể

Trong Python, chúng ta có thể có một danh sách hoặc một mảng từ điển. Trong một đối tượng như vậy, mọi phần tử của danh sách là một từ điển. Mỗi từ điển có thể được truy cập bằng cách sử dụng chỉ mục của nó

Xem đoạn mã sau

lst = [{'a':0,'b':1,'c':2},
       {'d':3,'c':4,'b':5},
       {'a':5,'d':6,'e':1}]

print[lst[1]]
print[lst[1]['c']]

đầu ra

{'d': 3, 'c': 4, 'b': 5}
4

Trong ví dụ trên, chúng tôi tạo một danh sách các từ điển trống và có một từ điển được lặp lại dưới dạng phần tử danh sách. Hàm

{'d': 3, 'c': 4, 'b': 5}
4
19 tạo từ điển rỗng. Chúng tôi có thể nối các giá trị trong các từ điển trống này cho phù hợp

Chúng ta đã làm quen với các danh sách trong chương trước. Trong chương này của khóa học Python trực tuyến của chúng tôi, chúng tôi sẽ trình bày về từ điển, toán tử và phương thức trên từ điển. Các chương trình hoặc tập lệnh Python không có danh sách và từ điển gần như không thể tưởng tượng được. Từ điển và các triển khai mạnh mẽ của chúng là một phần khiến Python trở nên hiệu quả và vượt trội. Giống như các danh sách, chúng có thể dễ dàng thay đổi, có thể thu nhỏ và phát triển tùy ý trong thời gian chạy. Chúng thu nhỏ và phát triển mà không cần tạo bản sao. Từ điển có thể được chứa trong danh sách và ngược lại

Nhưng sự khác biệt giữa danh sách và từ điển là gì? . Tuy nhiên, sự khác biệt chính là các mục trong từ điển được truy cập thông qua các phím và không thông qua vị trí của chúng

Về mặt lý thuyết hơn, chúng ta có thể nói rằng từ điển là triển khai Python của một kiểu dữ liệu trừu tượng, được khoa học máy tính gọi là một mảng kết hợp. Mảng kết hợp bao gồm - giống như từ điển của các cặp [khóa, giá trị], sao cho mỗi khóa có thể xuất hiện nhiều nhất một lần trong bộ sưu tập. Bất kỳ khóa nào của từ điển được liên kết [hoặc ánh xạ] với một giá trị. Các giá trị của từ điển có thể là bất kỳ loại dữ liệu Python nào. Vì vậy, từ điển là các cặp khóa-giá trị không có thứ tự. Từ điển được triển khai dưới dạng bảng băm và đó là lý do tại sao chúng được gọi là "Băm" trong ngôn ngữ lập trình Perl

Từ điển không hỗ trợ hoạt động trình tự của các loại dữ liệu trình tự như chuỗi, bộ dữ liệu và danh sách. Từ điển thuộc loại ánh xạ tích hợp, nhưng cho đến nay, chúng là đại diện duy nhất của loại này

Ở cuối chương này, chúng ta sẽ trình bày cách biến một từ điển thành một danh sách, chứa các bộ [key,value]-tuple hoặc hai danh sách, i. e. một với các phím và một với các giá trị. Việc chuyển đổi này cũng có thể được thực hiện ngược lại

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Ví dụ về từ điển

Ví dụ đầu tiên của chúng tôi là một từ điển với các thành phố ở Hoa Kỳ và Canada và dân số tương ứng của chúng. Chúng tôi đã lấy những con số đó từ "Danh sách các thành phố Bắc Mỹ theo dân số" từ Wikipedia

Nếu chúng ta muốn lấy dân số của một trong những thành phố đó, tất cả những gì chúng ta phải làm là sử dụng tên của thành phố làm chỉ mục. Chúng ta có thể thấy rằng các từ điển được đặt trong dấu ngoặc nhọn. Chúng chứa các cặp giá trị chính. Một khóa và giá trị tương ứng của nó được phân tách bằng dấu hai chấm

city_population = {"New York City": 8_550_405, 
                   "Los Angeles": 3_971_883, 
                   "Toronto": 2_731_571, 
                   "Chicago": 2_720_546, 
                   "Houston": 2_296_224, 
                   "Montreal": 1_704_694, 
                   "Calgary": 1_239_220, 
                   "Vancouver": 631_486, 
                   "Boston": 667_137}

ĐẦU RA

8550405

Chúng tôi có thể truy cập giá trị cho một khóa cụ thể bằng cách đặt khóa này trong ngoặc sau tên của từ điển

city_population["New York City"]

ĐẦU RA

8550405

city_population["Toronto"]

ĐẦU RA

2731571

________số 8

ĐẦU RA

667137

Điều gì xảy ra, nếu chúng tôi cố gắng truy cập một khóa, tôi. e. một thành phố trong ví dụ của chúng tôi, không có trong từ điển?

{'d': 3, 'c': 4, 'b': 5}
4
0

ĐẦU RA

{'d': 3, 'c': 4, 'b': 5}
4
1

Một câu hỏi thường gặp là nếu các đối tượng từ điển được sắp xếp. Sự không chắc chắn phát sinh từ thực tế là các từ điển không được sắp xếp trong các phiên bản trước Python 3. 7. Trong Trăn 3. 7 và tất cả các phiên bản mới hơn, từ điển được sắp xếp theo thứ tự chèn mục. Trong ví dụ của chúng tôi, điều này có nghĩa là từ điển giữ thứ tự mà chúng tôi đã xác định từ điển. Bạn có thể thấy điều này bằng cách in từ điển

8550405
0

ĐẦU RA

8550405
1

Tuy nhiên, đặt hàng không có nghĩa là bạn có cách gọi trực tiếp phần tử thứ n của từ điển. Vì vậy, cố gắng truy cập từ điển bằng một số - giống như chúng ta làm với danh sách - sẽ dẫn đến một ngoại lệ

8550405
2

ĐẦU RA

8550405
3

Rất dễ dàng để thêm một mục khác vào một từ điển hiện có

8550405
4

ĐẦU RA

8550405
5

Vì vậy, có thể tạo từ điển dần dần bằng cách bắt đầu với một từ điển trống. Cho đến nay, chúng tôi vẫn chưa đề cập đến cách xác định một cái trống. Nó có thể được thực hiện bằng cách sử dụng một cặp dấu ngoặc trống. Sau đây định nghĩa một từ điển trống có tên là thành phố

8550405
6

8550405
7

Nhìn vào các ví dụ đầu tiên của chúng tôi với các thành phố và dân số của chúng, bạn có thể đã có ấn tượng sai lầm rằng các giá trị trong từ điển phải khác nhau. Các giá trị có thể giống nhau, như bạn có thể thấy trong ví dụ sau. Để vinh danh vị thánh bảo trợ của Python "Monty Python", giờ đây chúng ta sẽ có một số từ điển thực phẩm đặc biệt. Python là gì nếu không có "thịt xông khói", "trứng" và "thư rác"?

8550405
8

Các khóa của một từ điển là duy nhất. Trong trường hợp một khóa được xác định nhiều lần, giá trị của "chiến thắng" cuối cùng

8550405
9

Ví dụ tiếp theo của chúng tôi là một từ điển Anh-Đức đơn giản

city_population["New York City"]
0

Còn việc có một từ điển ngôn ngữ khác, chẳng hạn như tiếng Đức-Pháp thì sao?

Bây giờ thậm chí có thể dịch từ tiếng Anh sang tiếng Pháp, mặc dù chúng tôi không có từ điển Anh-Pháp. de_fr[en_de["red"]] cho chúng ta từ tiếng Pháp có nghĩa là "màu đỏ", tôi. e. "đỏ mặt"

city_population["New York City"]
1

city_population["New York City"]
2

city_population["New York City"]
3

Chúng tôi có thể sử dụng các loại tùy ý làm giá trị trong từ điển, nhưng có một hạn chế đối với các khóa. Chỉ các kiểu dữ liệu bất biến mới có thể được sử dụng làm khóa, tôi. e. không có danh sách hoặc từ điển có thể được sử dụng. Nếu bạn sử dụng loại dữ liệu có thể thay đổi làm khóa, bạn sẽ nhận được thông báo lỗi

city_population["New York City"]
4

Tuple as keys là được, như bạn có thể thấy trong ví dụ sau

city_population["New York City"]
5

Hãy cải thiện các ví dụ của chúng ta với từ điển ngôn ngữ tự nhiên một chút. Chúng tôi tạo ra một từ điển của từ điển

city_population["New York City"]
6

city_population["New York City"]
7

Từ điển của từ điển

city_population["New York City"]
8

city_population["New York City"]
9

8550405
0

8550405
1

8550405
2

8550405
3

8550405
4

8550405
5

8550405
6

8550405
7

8550405
8

8550405
9

Toán tử trong từ điển

OperatorExplanationlen[d]trả về số lượng mục được lưu trữ, i. e. số cặp [khóa, giá trị]. del d[k]xóa khóa k cùng với giá trị k của nó trong dTrue, nếu khóa k tồn tại trong từ điển dk không có trong dTrue, nếu khóa k không tồn tại trong từ điển d

ví dụ. Từ điển sau chứa ánh xạ từ các ký tự Latinh sang mã morsecode

city_population["Toronto"]
0

Nếu bạn lưu từ điển này dưới dạng morsecode. py, bạn có thể dễ dàng làm theo các ví dụ sau. Lúc đầu, bạn phải nhập từ điển này

city_population["Toronto"]
1

Số ký tự có trong từ điển này có thể được xác định bằng cách gọi hàm len

city_population["Toronto"]
2

Từ điển chỉ chứa các ký tự chữ hoa, ví dụ: "a" trả về Sai

city_population["Toronto"]
3

city_population["Toronto"]
4

city_population["Toronto"]
5

city_population["Toronto"]
6

city_population["Toronto"]
7

city_population["Toronto"]
8

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

Các khóa học trực tuyến sắp tới

Khái niệm cơ bản về Python cho người mới bắt đầu

Khóa học nâng cao chuyên sâu

Python dành cho kỹ sư và nhà khoa học

Lập trình hướng đối tượng với Python

đăng ký tại đây

pop[] và popitem[]

nhạc pop

Danh sách có thể được sử dụng làm ngăn xếp và toán tử pop[] được sử dụng để lấy một phần tử từ ngăn xếp. Cho đến nay, rất tốt cho các danh sách, nhưng có hợp lý không khi có một phương thức pop[] cho từ điển? . e. không có thứ tự và không có chỉ mục. Do đó, pop[] được định nghĩa khác với từ điển. Các khóa và giá trị được triển khai theo thứ tự tùy ý, không phải ngẫu nhiên mà phụ thuộc vào việc triển khai. Nếu D là từ điển thì D. pop[k] xóa khóa k cùng với giá trị của nó khỏi từ điển D và trả về giá trị tương ứng làm giá trị trả về, i. e. Đ[k]

city_population["Toronto"]
9

Nếu không tìm thấy khóa, lỗi KeyError sẽ xuất hiện

2731571
0

Nếu chúng ta cố gắng tìm ra thủ đô của Thụy Sĩ trong ví dụ trước, chúng ta sẽ gặp lỗi KeyError. Để ngăn chặn những lỗi này, có một cách tao nhã. Phương thức pop[] có tham số thứ hai tùy chọn, có thể được sử dụng làm giá trị mặc định

2731571
1

2731571
2

2731571
3

dân chúng

popitem[] là một phương thức của dict, không nhận bất kỳ tham số nào, loại bỏ và trả về một cặp [khóa, giá trị] tùy ý dưới dạng 2-tuple. Nếu popitem[] được áp dụng trên một từ điển trống, KeyError sẽ xuất hiện

2731571
4

2731571
5

2731571
5

2731571
5

2731571
5

Truy cập các khóa không tồn tại

Nếu bạn cố truy cập một khóa không tồn tại, bạn sẽ nhận được thông báo lỗi

2731571
9

Bạn có thể ngăn chặn điều này bằng cách sử dụng toán tử "in"

city_population["Boston"]
0

Một phương pháp khác để truy cập các giá trị thông qua khóa là sử dụng phương thức get[]. get[] không gây ra lỗi, nếu một chỉ mục không tồn tại. Trong trường hợp này, nó sẽ trả về Không. Cũng có thể đặt giá trị mặc định, giá trị này sẽ được trả về nếu chỉ mục không tồn tại

city_population["Boston"]
1

city_population["Boston"]
2

city_population["Boston"]
3

city_population["Boston"]
4

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

phương pháp quan trọng

Một từ điển có thể được sao chép bằng phương thức copy[]

sao chép[]

city_population["Boston"]
5

city_population["Boston"]
6

Bản sao này là bản sao nông, không phải bản sao sâu. Ví dụ: nếu một giá trị là một loại dữ liệu phức tạp như danh sách, thì các thay đổi tại chỗ trong đối tượng này cũng có tác dụng đối với bản sao

city_population["Boston"]
7

Nếu chúng tôi kiểm tra đầu ra, chúng tôi có thể thấy rằng tiêu đề của khóa học 2 đã được thay đổi không chỉ trong khóa đào tạo từ điển mà cả trong khóa đào tạo2

Mọi thứ hoạt động theo cách bạn mong đợi, nếu bạn gán một giá trị mới, tôi. e. một đối tượng mới, đến một khóa

city_population["Boston"]
8

Nếu bạn muốn hiểu lý do của hành vi này, chúng tôi khuyên bạn nên xem chương "Sao chép nông và sâu"

xa lạ[]

Nội dung của từ điển có thể được xóa bằng phương thức clear[]. Từ điển không bị xóa nhưng được đặt thành từ điển trống

city_population["Boston"]
9

Cập nhật. Hợp nhất từ ​​điển

Còn việc nối các từ điển, giống như chúng ta đã làm với các danh sách thì sao? . phương thức cập nhật update[] hợp nhất các khóa và giá trị của từ điển này sang từ điển khác, ghi đè lên các giá trị của cùng một khóa

667137
0

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Lặp lại từ điển

Không cần phương thức nào để lặp lại các khóa của từ điển

667137
1

Tuy nhiên, có thể sử dụng phương thức keys[], chúng ta sẽ nhận được kết quả tương tự

667137
2

Các giá trị phương thức[] là một cách thuận tiện để lặp lại trực tiếp trên các giá trị

667137
3

Vòng lặp trên tương đương logic với vòng lặp sau

667137
4

Chúng tôi đã nói một cách hợp lý, bởi vì cách thứ hai kém hiệu quả hơn

Nếu bạn đã quen với khả năng về thời gian của ipython, bạn có thể đo thời gian được sử dụng cho hai lựa chọn thay thế

667137
5

667137
6

Kết nối giữa Danh sách và Từ điển

Nếu bạn đã làm việc một thời gian với Python, gần như chắc chắn sẽ đến lúc bạn muốn hoặc phải chuyển đổi danh sách thành từ điển hoặc ngược lại. Sẽ không quá khó để viết một hàm làm việc này. Nhưng Python sẽ không phải là Python nếu nó không cung cấp các chức năng như vậy

Nếu chúng ta có một cuốn từ điển

667137
7

chúng ta có thể biến danh sách này thành một danh sách có hai bộ

667137
8

Danh sách L và từ điển D chứa nội dung giống nhau, i. e. nội dung thông tin hoặc để diễn đạt "Entropy của L và D là như nhau" một cách có ý nghĩa. Tất nhiên, thông tin từ danh sách L khó lấy hơn từ từ điển D. Để tìm một khóa nào đó trong L, chúng ta sẽ phải duyệt qua các bộ của danh sách và so sánh các thành phần đầu tiên của các bộ với khóa mà chúng ta đang tìm. Tra cứu từ điển được thực hiện ngầm để đạt hiệu quả tối đa

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Danh sách từ điển

Có thể tạo danh sách từ các từ điển bằng cách sử dụng các phương thức items[], keys[] và values[]. Đúng như tên gọi, phương thức keys[] tạo một danh sách, danh sách này chỉ bao gồm các khóa của từ điển. values[] tạo ra một danh sách bao gồm các giá trị. items[] có thể được sử dụng để tạo danh sách bao gồm 2 bộ [key,value]-cặp

667137
9

{'d': 3, 'c': 4, 'b': 5}
4
00

{'d': 3, 'c': 4, 'b': 5}
4
01

{'d': 3, 'c': 4, 'b': 5}
4
02

{'d': 3, 'c': 4, 'b': 5}
4
03

{'d': 3, 'c': 4, 'b': 5}
4
04

Nếu chúng ta áp dụng phương thức items[] cho một từ điển, chúng ta sẽ không lấy lại danh sách, như trường hợp đã từng xảy ra trong Python 2, mà là chế độ xem các mục. Chế độ xem mục có thể được chuyển thành danh sách bằng cách áp dụng chức năng danh sách. Chúng tôi không bị mất thông tin bằng cách biến từ điển thành chế độ xem mục hoặc danh sách mục, tôi. e. có thể tạo lại từ điển gốc từ chế độ xem được tạo bởi items[]. Mặc dù danh sách 2 bộ này có cùng entropy, tôi. e. nội dung thông tin là như nhau, hiệu quả của cả hai phương pháp là hoàn toàn khác nhau. Kiểu dữ liệu từ điển cung cấp các phương pháp hiệu quả cao để truy cập, xóa và thay đổi các thành phần của từ điển, trong khi trong trường hợp danh sách, các chức năng này phải được thực hiện bởi lập trình viên

Biến danh sách thành từ điển

Bây giờ chúng ta sẽ chú ý đến nghệ thuật nấu ăn, nhưng đừng sợ, đây vẫn là khóa học về trăn chứ không phải khóa học nấu ăn. Chúng tôi muốn chỉ cho bạn cách biến danh sách thành từ điển, nếu những danh sách này đáp ứng một số điều kiện nhất định. Chúng tôi có hai danh sách, một danh sách chứa các món ăn và danh sách còn lại là các quốc gia tương ứng

Bây giờ chúng ta sẽ tạo một từ điển, trong đó gán một món ăn, một món ăn đặc trưng của quốc gia, cho một quốc gia; . Với mục đích này, chúng ta cần hàm zip[]. Tên zip đã được chọn đúng vì hai danh sách được kết hợp với nhau, hoạt động giống như một dây kéo. Kết quả là một trình lặp danh sách. 1 Điều này có nghĩa là chúng ta phải bọc hàm truyền list[] xung quanh lệnh gọi zip để lấy danh sách để chúng ta có thể xem điều gì đang xảy ra

{'d': 3, 'c': 4, 'b': 5}
4
05

{'d': 3, 'c': 4, 'b': 5}
4
06

Ngoài ra, bạn có thể lặp lại đối tượng zip trong vòng lặp for. Bằng cách này, chúng tôi không tạo danh sách, điều này hiệu quả hơn, nếu chúng tôi chỉ muốn lặp lại các giá trị và không cần danh sách

{'d': 3, 'c': 4, 'b': 5}
4
07

Bây giờ các món ăn đặc trưng của đất nước chúng tôi ở dạng danh sách, - tôi. e. một danh sách gồm hai bộ, trong đó các thành phần đầu tiên được xem là khóa và các thành phần thứ hai là giá trị - có thể tự động chuyển thành từ điển bằng cách chuyển nó bằng dict[]

{'d': 3, 'c': 4, 'b': 5}
4
08

Tuy nhiên, điều này rất không hiệu quả, bởi vì chúng tôi đã tạo một danh sách gồm 2 bộ để biến danh sách này thành một lệnh chính tả. Điều này có thể được thực hiện trực tiếp bằng cách áp dụng dict cho zip

{'d': 3, 'c': 4, 'b': 5}
4
09

Vẫn còn một câu hỏi liên quan đến hàm zip[]. Điều gì xảy ra nếu một trong hai danh sách đối số chứa nhiều phần tử hơn danh sách còn lại?

Thật dễ dàng để trả lời. Các phần tử thừa, không ghép được sẽ bỏ qua

{'d': 3, 'c': 4, 'b': 5}
4
10

Vì vậy, trong khóa học này, chúng tôi sẽ không trả lời câu hỏi món ăn quốc gia của Thụy Sĩ là gì

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Mọi thứ trong một bước

Thông thường, chúng tôi khuyên bạn không nên thực hiện quá nhiều bước trong một biểu thức lập trình, mặc dù nó trông ấn tượng hơn và mã gọn gàng hơn. Sử dụng tên biến "biết nói" trong các bước trung gian có thể nâng cao mức độ dễ đọc. Mặc dù việc tạo từ điển trước đây của chúng tôi chỉ trong một lần có thể rất hấp dẫn

{'d': 3, 'c': 4, 'b': 5}
4
11

Tất nhiên, nó dễ đọc hơn như thế này

{'d': 3, 'c': 4, 'b': 5}
4
12

Chúng tôi nhận được kết quả tương tự, như thể chúng tôi sẽ gọi nó trong một lần

Nguy hiểm rình rập

Đặc biệt đối với những người chuyển từ Python 2. x sang Python 3. x. zip[] được sử dụng để trả về một danh sách, giờ nó đang trả về một trình vòng lặp. Bạn phải nhớ rằng các trình vòng lặp sẽ tự cạn kiệt, nếu chúng được sử dụng. Bạn có thể thấy điều này trong phiên tương tác sau

{'d': 3, 'c': 4, 'b': 5}
4
13

Hiệu ứng này cũng có thể được nhìn thấy bằng cách gọi toán tử truyền danh sách

{'d': 3, 'c': 4, 'b': 5}
4
14

{'d': 3, 'c': 4, 'b': 5}
4
15

Như một bài tập, bạn có thể suy ngẫm về kịch bản sau. Tại sao chúng tôi nhận được một thư mục trống bằng cách gọi

8550405
05?

{'d': 3, 'c': 4, 'b': 5}
4
16

bài tập

bài tập 1

Viết hàm dict_merge_sum nhận hai từ điển

8550405
06 và
8550405
07 làm tham số. Các giá trị của cả hai từ điển là số. Hàm sẽ trả về từ điển tổng hợp nhất
8550405
08 của các từ điển đó. Nếu khóa
8550405
09 có cả trong
8550405
06 và
8550405
07, các giá trị tương ứng sẽ được thêm vào và đưa vào từ điển
8550405
08 Nếu
8550405
09 chỉ có trong một trong các từ điển, thì
8550405
09 và giá trị tương ứng sẽ được đưa vào
8550405
08

Bài tập 2

Cho dữ liệu đơn giản sau của một siêu thị

{'d': 3, 'c': 4, 'b': 5}
4
17

Để sẵn sàng cho một cuộc khủng hoảng sắp xảy ra, bạn quyết định mua mọi thứ. Đây không phải là hành vi xã hội đặc biệt, nhưng vì nhiệm vụ, hãy tưởng tượng nó. Câu hỏi đặt ra là bạn sẽ phải trả bao nhiêu?

bài tập 3

  • Tạo siêu thị ảo. Đối với mỗi bài viết có một mức giá cho mỗi bài viết và một số lượng, tôi. e. chứng khoán. [Gợi ý. bạn có thể sử dụng cái từ bài tập trước. ]
  • Tạo danh sách mua sắm cho khách hàng. Danh sách mua sắm chứa các mặt hàng cộng với số lượng
  • Các khách hàng lần lượt lấp đầy giỏ hàng của họ. Kiểm tra xem có đủ hàng không. Tạo hóa đơn cho từng khách hàng

bài tập 4

Given là hòn đảo của Vannoth

Tạo một từ điển, nơi chúng tôi nhận được cho mọi thành phố Vannoth khoảng cách đến thủ đô Rogeburgh

bài tập 5

Tạo một từ điển nơi bạn có thể lấy khoảng cách giữa hai thành phố tùy ý

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Các giải pháp

Giải bài tập 1

Chúng tôi cung cấp hai giải pháp cho bài tập này

Đầu tiên là chỉ sử dụng những thứ bạn sẽ học được, nếu bạn theo dõi tuần tự khóa học Python của chúng tôi. Giải pháp thứ hai sử dụng các kỹ thuật sẽ được đề cập sau trong hướng dẫn của chúng tôi

giải pháp đầu tiên

{'d': 3, 'c': 4, 'b': 5}
4
18

giải pháp thứ hai

{'d': 3, 'c': 4, 'b': 5}
4
19

Giải bài tập 2

8550405
00

Giải bài tập 3

8550405
01

Giải pháp thay thế cho bài tập 3, trong đó chúng tôi tạo danh sách cắt ngẫu nhiên

8550405
02

Giải bài tập 4

8550405
03

Lời giải bài tập 5

8550405
04

chú thích

1 Nếu bạn muốn tìm hiểu thêm về cách thức hoạt động của trình vòng lặp và cách sử dụng chúng, chúng tôi khuyên bạn nên xem qua chương Trình vòng lặp và Trình tạo của chúng tôi

Làm cách nào để sử dụng mảng từ điển trong Python?

Đối tượng Từ điển được sử dụng để chứa một tập hợp các giá trị dữ liệu ở dạng cặp [khóa, mục] . Từ điển đôi khi được gọi là mảng kết hợp vì nó liên kết khóa với mục. Các khóa hoạt động theo cách tương tự như các chỉ mục trong một mảng, ngoại trừ các chỉ mục mảng là số và các khóa là các chuỗi tùy ý.

Làm cách nào để đọc mảng từ điển trong Python?

Có hai cách để thực hiện việc này. .
Đọc từ tệp văn bản. Chúng ta có thể đọc dữ liệu từ tệp văn bản dưới dạng chuỗi và chuyển đổi dữ liệu đó thành từ điển trong Python. .
Đọc bằng Mô-đun Pickle. Mô-đun dưa chua trong Python chủ yếu được sử dụng trong các lĩnh vực như Khoa học dữ liệu nơi tính bền vững của dữ liệu là rất quan trọng. .
Đọc từ tệp văn bản

dict[] có giống như {} không?

Như chúng ta có thể thấy, dict[] rõ ràng là chậm hơn {} . Đặc biệt nếu dictionary được khởi tạo nhiều phần tử thì ảnh hưởng rất lớn nếu code của bạn cần 0. 04ms hoặc gần như 0. 08ms để tạo từ điển của bạn. Ngay cả khi bạn khởi tạo một từ điển trống, nó vẫn chậm hơn.

Từ điển có thể có một mảng không?

Một đối tượng Từ điển chứa một tập hợp các cặp khóa-mục. Mục của từ điển là một giá trị được liên kết rõ ràng với một khóa duy nhất và khóa này được sử dụng để truy xuất mục. Khóa có thể thuộc bất kỳ loại nào ngoại trừ một biến thể hoặc một mảng [nhưng nhìn chung, đó là một chuỗi hoặc vẫn là một số nguyên].

Chủ Đề