00. 00 Xin chào. Trong video này, chúng ta sẽ xem qua phần thứ ba trong danh sách mục lục này của tôi. cách sửa đổi các giá trị trong từ điển trong khi lặp qua nó
00. 09 Điều này sẽ mở rộng kiến thức của chúng ta từ cách nhìn mọi thứ trong từ điển đến cách thực hiện các thao tác phức tạp, hiệu quả trên từ điển khi bạn lướt qua chúng
00. 19 Hãy chuyển sang thiết bị đầu cuối và tôi sẽ định nghĩa một từ điển nhỏ ở đây để làm ví dụ cho chúng ta. Và ý tưởng sẽ là nó sẽ là một số loại trái cây, và sau đó là một số giá bằng xu hoặc một phần nhỏ của đô la. Và, bạn biết đấy, bạn có thể tưởng tượng rằng nếu bạn là người có một cửa hàng, bạn có thể muốn theo dõi các loại trái cây của mình và giá của chúng theo cách này
00. 42 Vì vậy, ở đây chúng tôi có từ điển
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
1 của chúng tôi. Hãy đổi tên nó. Hãy gọi nó là for key, value in prices.items[]:
value = value + 0.2
# no change in prices
2, và bây giờ chúng ta sẽ làm việc với for key, value in prices.items[]:
value = value + 0.2
# no change in prices
300. 51 Vì vậy, điều đó sẽ đơn giản hơn một chút và dễ hiểu hơn một chút. Bắt đầu sao lưu,
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
3. Tuyệt quá. Ví dụ, hãy tưởng tượng bạn có cửa hàng và nền kinh tế đang hoạt động không tốt lắm, hoặc có thể nó đang hoạt động rất tốt và bạn có thể tính thêm 10 xu cho mỗi loại trái cây. Vì vậy, làm thế nào bạn sẽ làm điều đó? 01. 11 Bạn sẽ nói
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
1 và sau đó for key, value in prices.items[]:
value = value + 0.2
# no change in prices
3 tại for key, value in prices.items[]:
value = value + 0.2
# no change in prices
3 bằng với những gì nó đã có,01. 18
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
4, cộng với for key, value in prices.items[]:
value = value + 0.2
# no change in prices
5. Vì vậy, chúng tôi đang tăng mỗi giá thêm 10 xu. Và điều này sẽ làm gì nếu chúng ta nhìn vào for key, value in prices.items[]:
value = value + 0.2
# no change in prices
3? . Điều này là do cách các số dấu phẩy động được lưu trữ trong Python01. 38 Đôi khi họ có thể hơi khó tính một chút. Nhưng dù sao đi nữa, rõ ràng những gì chúng tôi đã làm là chúng tôi đã thêm 10 xu vào mỗi giá ban đầu của mình. Vì vậy, điều này thật tuyệt và đây thực sự là mô hình bạn nên sử dụng khi bạn muốn sửa đổi các giá trị trong từ điển bất kỳ lúc nào
01. 53 Gần như bạn sẽ luôn phải sử dụng mô hình khóa và sau đó truy cập từ điển gốc ở khóa đó. Bây giờ, bạn có thể đang nghĩ “Chà, chúng ta đã học được tất cả những cách thú vị này để tra từ điển và nhìn mọi thứ theo cách dễ dàng hơn. ” Bạn biết đấy, chúng ta có thể gán tên cho khóa và giá trị, sau đó chúng ta có thể in chúng ra và làm mọi thứ với chúng. Vì vậy, bạn có thể nói, “Chà, tại sao tôi không làm
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
7 for key, value in prices.items[]:
value = value + 0.2
# no change in prices
8. ” Hoặc giả sử là for key, value in prices.items[]:
value = value + 0.2
# no change in prices
9, để rõ ràng hơn điều gì sẽ xảy ra02. 24 Nhưng điều này không thực sự diễn ra theo cách mà bạn có thể hy vọng. Hãy xem
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
3 là gì. Ồ, nó giống hệt như lần cuối cùng chúng ta nhìn vào nó. Chà, điều đó hơi kỳ lạ, bởi vì chúng tôi đã trải qua và lặp đi lặp lại02. 36 Và rõ ràng, nếu bạn đi qua và bạn nói điều này, bạn nói
02. 41
for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
1, sau đó chúng tôi nhận được tất cả các mặt hàng này. Vì vậy, chúng tôi rõ ràng có quyền truy cập vào chúng theo một nghĩa nào đó. Nhưng chúng ta không thể sửa đổi chúng theo cùng một cách. Chà, tại sao lại thế này? 02. 56 Và nếu chúng ta nhìn vào nó, nó là một vật thể
for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
3. Và điều này thực sự có nghĩa là nó là một đối tượng cụ thể được thiết kế để hiển thị cho bạn nội dung trong từ điển mà không thực sự cấp cho bạn quyền truy cập vào từ điển này03. 09 Và điều đó thực sự hữu ích khi bạn thiết kế các ứng dụng lớn, bởi vì nếu bạn đang làm việc với các lập trình viên khác và các gói phần mềm khác, thì bạn có thể cấp cho người khác quyền xem nội dung trong từ điển. Họ có thể xem dữ liệu của bạn nhưng không thể sửa đổi dữ liệu đó
03. 24 Và bạn có thể tưởng tượng ra nhiều kịch bản khác nhau trong đó điều này có thể thực sự, thực sự hữu ích cho bạn với tư cách là một nhà phát triển. Vì vậy, hãy ghi nhớ điều đó khi bạn đang cố sửa đổi các giá trị của từ điển
03. 32 Bạn thực sự cần truy cập từ điển gốc bằng cách sử dụng khóa. Nếu không, bạn sẽ không thực sự có thể thay đổi mọi thứ. Bạn sẽ chỉ có thể xem chúng, thậm chí có thể sao chép chúng, nhưng bạn sẽ không thể thay đổi chúng
03. 43 Vì vậy, bước tiếp theo của chúng ta là làm cách nào để sửa đổi các phím trong từ điển?
03. 56 Bạn chỉ cần đặt bằng tay. Và điều này hoạt động rất tốt, chúng tôi đã thêm
for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
4. Nó có giá là for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
5, chúng khá đắt. Nhưng bạn phải làm điều này bằng tay, phải không?04. 06 Và có thể bạn có một danh sách mà bạn muốn lặp lại và bạn có thể thêm danh sách đó vào danh sách. Nhưng có một số trường hợp mà bạn có thể cảm thấy những gì bạn muốn làm là nói điều gì đó như thế này,
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
1 và sau đó bạn có thể muốn bắt đầu cộng và trừ từ từ điển khi bạn thực hiện các phím khác nhau, phải không?04. 23 Và tôi đã không đề cập đến cách xóa khóa là bạn sử dụng từ khóa
for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
7 [xóa] có sẵn trong Python này. Nhưng hãy xem điều gì sẽ xảy ra khi chúng ta làm điều này trong một vòng lặp04. 34 bùng nổ. Chúng tôi nhận được một
for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
8. Và tôi nghĩ cách tốt nhất để giải thích chính xác tại sao điều này lại xảy ra là nghĩ về nó theo cách tương tự với một người hoặc một nhóm người thực, phải không? . ” Nhưng sau đó khi bạn đang làm điều đó, đi qua những loại trái cây này, họ bắt đầu ném thêm trái cây vào thùng và lấy một số trong số chúng ra trước khi bạn có thể dán nhãn lên chúng. Điều đó không hiệu quả, phải không?05. 01 Nó không có ý nghĩa gì cả. Điều đó thậm chí có nghĩa gì khi nói
for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
9 khi for key, value in prices.items[]:
value = value + 0.2
# no change in prices
3 liên tục thay đổi? 05. 15 Tuy nhiên, nếu bạn thực sự cần phải làm điều đó, điều bạn có thể làm là bạn có thể nói
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
61. Vì vậy, bạn có thể chuyển đổi chúng thành for key, value in prices.items[]:
value = value + 0.2
# no change in prices
62, sau đó bạn có thể nói for key, value in prices.items[]:
value = value + 0.2
# no change in prices
3 tại, tôi không biết—bạn có thể lặp và đồng thời cộng và trừ từ từ điển theo bất kỳ cách nào bạn muốn. Đúng? 05. 42 Và vì vậy chúng tôi có
for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
4 tại for key, value in prices.items[]:
value = value + 0.2
# no change in prices
66 và không có lỗi. Và trên thực tế, tất nhiên, đây không phải là điều bạn thực sự muốn làm, bởi vì không cần phải lặp lại ở đây05. 51 Nhưng bạn có thể nghĩ đến các ứng dụng khác phức tạp hơn khi nguyên tắc tương tự xảy ra. Tuy nhiên, một điều cần lưu ý là việc chuyển đổi nó thành danh sách sẽ sử dụng nhiều bộ nhớ hơn, bởi vì
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
67 này, nó nhận từng khóa một từ từ điển, trong khi chuyển đổi nó thành danh sách giúp bạn truy cập tất cả các khóa này và đặt 06. 10 Vì vậy, nếu bạn đang làm điều này với một lượng dữ liệu khổng lồ, nó có thể không lý tưởng. Vì vậy, chúng tôi đã giới thiệu cách sửa đổi các giá trị trong từ điển và cách sửa đổi các khóa trong từ điển, đồng thời chúng tôi cũng đã đề cập đến một số cạm bẫy phổ biến có thể dẫn đến sai sót
06. 24 Điểm mấu chốt ở đây là khi bạn muốn sửa đổi các giá trị, bạn nhất thiết phải tương tác với từ điển gốc. Nếu bạn không, thì bạn sẽ không thực sự nhận được bất kỳ kết quả nào
06. 37 Vì vậy, chúng tôi sẽ làm một cái gì đó như thế này, và sau đó chúng tôi sẽ nhận được
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
3, và tất cả chúng đã được đổi thành for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
5, phải không? . for key, value in prices.items[]:
value = value + 0.2
# no change in prices
3 tại for key, value in prices.items[]:
value = value + 0.2
# no change in prices
21, đó là một loại trái cây, bằng với for key, value in prices.items[]:
value = value + 0.2
# no change in prices
2206. 56 Việc sửa đổi các phím theo cách này luôn an toàn hơn là cố gắng thực hiện chúng theo vòng lặp. Và nếu bạn cần thực hiện chúng trong một vòng lặp và bạn cần thay đổi các phím khi thực hiện, trước tiên hãy chuyển đổi nó thành một danh sách
07. 08 Vì vậy. Đó là cách thay đổi và sửa đổi các khóa và giá trị trong từ điển trong phép lặp
Kiran vào tháng 12. 29, 2019
Sửa đổi các khóa trong từ điển không có gì khác ngoài việc thêm các khóa mới nhưng không cập nhật bất kỳ khóa hiện có nào. Có đúng không?
Liam Pulsifer Nhóm RP vào tháng 12. 30, 2019
@Kiran chắc chắn rồi, tôi cho rằng điều đó hợp lý. Tôi đã sử dụng "sửa đổi khóa" để chỉ việc thêm hoặc xóa các khóa vì Python không cung cấp thao tác rõ ràng [mà tôi biết] để sửa đổi các khóa trong từ điển, ngoài việc xóa một khóa và thêm một khóa khác
mikesult vào ngày 5 tháng 5 năm 2020
Có nghĩa là bạn không thể "sửa đổi" một khóa vì nó là bất biến. Vì vậy, chỉ cần xóa cái cũ và thêm cái mới nếu bạn cần thay đổi khóa
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
4Ngoài ra, việc cố gắng cập nhật 'giá trị' không hoạt động vì khóa và giá trị là một phần của bộ giá trị bất biến. Tôi hơi ngạc nhiên khi nó không báo lỗi
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
Liam Pulsifer Nhóm RP vào ngày 6 tháng 5 năm 2020
@mikesult đây là những trực giác tuyệt vời mà bạn đang phát triển, đặc biệt là về các khóa từ điển. Tôi muốn nhanh chóng làm rõ điều gì đó về nhận xét của bạn về việc cập nhật giá trị - lý do mà việc cố gắng cập nhật giá trị theo cách bạn trình bày không mang lại hiệu quả mà còn không gây ra lỗi là vì về cơ bản, có vẻ như thế này
for tuple in prices.items[]:
key, value = tuple
value = value + 0.2
Vì vậy, trong thực tế, bạn không cố sửa đổi bộ dữ liệu. Những gì bạn đang thực sự sửa đổi chỉ đơn giản là một biến mới
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
23 có cùng giá trị với phần tử tương ứng của bộ dữ liệu. Tất nhiên, điều đó không liên quan gì đến “giá trị” thực nằm trong từ điển. Mặt khác, nếu bạn cố gắng làm điều nàyfor key, value in prices.items[]:
value = value + 0.2
# no change in prices
6bạn sẽ gặp lỗi khi cố gán cho một bộ. Tôi hy vọng những sự tinh tế này có ý nghĩa
mikesult vào ngày 6 tháng 5 năm 2020
lời giải thích hoàn hảo. Cảm ơn
yasserkgl vào ngày 25 tháng 5 năm 2020
xin chào tôi có thông báo lỗi dưới đây
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
2đầu ra
for key, value in prices.items[]:
value = value + 0.2
# no change in prices
0jaosunita vào ngày 5 tháng 6 năm 2020
@yasserkgl, dấu nháy đơn trong '4' phải được loại bỏ. Trân trọng
Liam Pulsifer Nhóm RP vào ngày 5 tháng 6 năm 2020
Câu hỏi hay @yasserkgl và câu trả lời hay @jaosunita
naomifos vào ngày 22 tháng 3 năm 2021
Xin chào, tôi đang tự hỏi bạn sẽ làm gì nếu bạn có, chẳng hạn như một danh sách từ điển và chức năng của bạn đang tìm kiếm một khóa cụ thể. Làm cách nào bạn có thể chỉ cần thêm các giá trị của khóa nhất định đó và trả về?