Xóa khóa trong từ điển python trong khi lặp lại

Python cung cấp nhiều cấu trúc dữ liệu khác nhau để lưu trữ thông tin. Từ điển là một cấu trúc dữ liệu python như vậy cho phép bạn lưu trữ các loại dữ liệu khác nhau ở một nơi. Nó cũng cung cấp khả năng tra cứu nhanh giúp tăng tốc độ truy cập vì nó bao gồm các cặp khóa-giá trị. Đôi khi bạn có thể cần xóa khóa từ điển trong khi lặp lại từ điển python. có nhiều hướng khác nhau để làm điều đó. Chúng ta sẽ xem xét từng phương pháp một


Python Xóa khóa từ điển trong khi lặp lại

Dưới đây là các cách khác nhau để xóa khóa từ điển trong khi lặp lại


1. Sử dụng hàm del

Trong ví dụ này, chúng tôi sẽ lặp qua khóa từ điển và sử dụng hàm del để xóa mục mong muốn

>>> d={1:'a',2:'b',3:'c'}

>>> for i in d.keys[]:
	if i==2:
		del d[2]

		
>>> d
{1: 'a', 3: 'c'}

Tương tự, chúng ta cũng có thể xóa các mục bằng cách sử dụng các giá trị, trong quá trình lặp

>>> d={1:'a',2:'b',3:'c'}

>>> for i in d.keys[]:
	if d[i]=='b':
		del d[i]

		
>>> d
{1: 'a', 3: 'c'}

Xin lưu ý, hàm del chỉ hoạt động trong Python 2 chứ không phải trong Python 3. Đối với python 3, bạn có thể sử dụng các phương pháp sau


2. Sử dụng hiểu từ điển

Hiểu từ điển tương tự như hiểu danh sách. Chúng cũng có thể được sử dụng để loại trừ các khóa theo yêu cầu của chúng tôi

Không nên xóa các mục khỏi từ điển trong khi lặp lại từ điển đó. Điều này có thể dẫn đến kết quả không chính xác do các phần tử bị bỏ qua hoặc một ngoại lệ sẽ được đưa ra để tránh hành vi không xác định ở giai đoạn sau. Ví dụ: xem xét đoạn mã sau

1

2

3

4

5

6

7

8

9

10

11

if __name__ == '__main__'.

 

    d = {'A': 1, 'B'. 2, 'C'. 3}

    key = 'B'

 

    cho k trong d:

        nếu k == phím:

            del d[k]

 

    in[d]

 

Tải xuống Chạy mã

Đầu ra.

Truy nguyên [lần gọi gần đây nhất].
  Tệp “tập lệnh. py”, dòng 6, trong
    cho k trong d.
Lỗi thời gian chạy. từ điển đã thay đổi kích thước trong quá trình lặp lại

 
Đoạn mã trên cho kết quả là RuntimeError: dictionary changed size during iteration. Bài đăng này thảo luận về một số lựa chọn thay thế để xóa các mục khỏi từ điển trong Python một cách an toàn trong khi lặp lại nó.

1. Lặp lại một bản sao của từ điển

Một giải pháp đơn giản là lặp lại một bản sao của từ điển và xóa các mục khỏi từ điển gốc. Đây là một chương trình chứng minh điều đó

1

2

3

4

5

6

7

8

9

10

11

if __name__ == '__main__'.

 

    d = {'A': 1, 'B'. 2, 'C'. 3}

    key = 'B'

 

    cho k trong d.bản sao[].

        nếu k == phím:

            del d[k]

 

    in[d]        # {'A': 1, 'C': 3}

 

Tải xuống Chạy mã

2. Thay đổi danh sách

Một tùy chọn khác là chuyển đổi các khóa của từ điển thành danh sách rồi lặp lại danh sách. Điều này được hiển thị dưới đây

1

2

3

4

5

6

7

8

9

10

11

if __name__ == '__main__'.

 

    d = {'A': 1, 'B'. 2, 'C'. 3}

    key = 'B'

 

    cho k trong danh sách[d.phím[]].

        nếu k == phím:

            del d[k]

 

    in[d]        # {'A': 1, 'C': 3}

 

Tải xuống Chạy mã

 
Nếu bạn cần xóa các mục dựa trên giá trị của từ điển, hãy cân nhắc sử dụng hàm items[].

1

2

3

4

5

6

7

8

9

10

11

if __name__ == '__main__'.

 

    d = {'A': 1, 'B'. 2, 'C'. 3}

    val = 2

 

    cho k, v in list[d.mặt hàng[]].

        nếu v == val:

            del d[k]

 

    in[d]        # {'A': 1, 'C': 3}

 

Tải xuống Chạy mã

3. Tạo danh sách các mục cần xóa

Ngoài ra, bạn có thể tạo một danh sách mới các mục cần xóa và xóa chúng sau khỏi từ điển. Điều này sẽ dịch sang một mã đơn giản dưới đây

Bạn có thể xóa mục trong từ điển Python không?

Phương pháp 1. Xóa Khóa khỏi Từ điển bằng cách sử dụng lệnh del .

Tôi có thể sử dụng phương thức Clear[] để xóa từ điển không?

Phương thức clear[] xóa tất cả các phần tử khỏi từ điển .

Bạn có thể lặp qua các khóa trong từ điển Python không?

Bạn có thể lặp qua từ điển Python bằng các phương thức keys[], items[] và values[] . keys[] trả về một danh sách các khóa từ điển có thể lặp lại. items[] trả về các cặp khóa-giá trị trong từ điển.

Chủ Đề