Tìm lệnh trùng lặp trong danh sách Python

Tôi muốn xóa các hàng trùng lặp và sau đó đếm tần suất của id [trong cột thứ nhất và cột thứ hai] trong danh sách từ điển này. Làm cách nào tôi có thể giải quyết vấn đề của mình bằng phép lặp và loại bỏ trùng lặp cách xóa từ điển trùng lặp trong danh sách từ điển và trích xuất các giá trị của từ điển

Tạo từ điển, sử dụng các mục Danh sách làm khóa. Điều này sẽ tự động loại bỏ mọi trùng lặp vì từ điển không thể có khóa trùng lặp

Tạo từ điển

mylist = ["a", "b", "a", "c", "c"]
mylist = list[dict. fromkeys[mylist]]
print[mylist]

Sau đó, chuyển từ điển trở lại thành danh sách

Chuyển đổi thành một danh sách

mylist = ["a", "b", "a", "c", "c"]
mylist = list[dict. fromkeys[mylist]]
print[mylist]

Bây giờ chúng tôi có một Danh sách không có bất kỳ bản sao nào và nó có cùng thứ tự với Danh sách ban đầu

In Danh sách để chứng minh kết quả

In danh sách

mylist = ["a", "b", "a", "c", "c"]
mylist = list[dict. fromkeys[mylist]]
print[mylist]

Tạo một chức năng

Nếu bạn muốn có một chức năng mà bạn có thể gửi các danh sách của mình và nhận lại chúng mà không bị trùng lặp, bạn có thể tạo một chức năng và chèn mã từ ví dụ trên

Sử dụng set có thể xóa từ điển trùng lặp khỏi danh sách Python. Đầu tiên, chuyển đổi chính tả ban đầu thành một danh sách các bộ dữ liệu, sau đó đặt chúng vào một tập hợp [loại bỏ các mục trùng lặp], sau đó quay lại thành một chính tả

[dict[t] for t in {tuple[d.items[]] for d in l}]

Ví dụ xóa lệnh trùng lặp trong danh sách bằng Python

Mã ví dụ đơn giản

Chuyển đổi danh sách từ điển thành danh sách các bộ trong đó các bộ chứa các mục của từ điển. Vì các bộ dữ liệu có thể được băm, nên bạn có thể loại bỏ các bản sao bằng cách sử dụng set [sử dụng cách hiểu set ở đây, một giải pháp thay thế python cũ hơn sẽ được set[tuple[d. items[]] for d in l]] và sau đó, tạo lại từ điển từ các bộ dữ liệu bằng dict

l = [{'a': 10, 'b': 4},
     {'a': 20, 'b': 4},
     {'a': 10, 'b': 4}]

seen = set[]
new_l = []
for d in l:
    t = tuple[d.items[]]
    if t not in seen:
        seen.add[t]
        new_l.append[d]

print[new_l]

đầu ra

Nguồn. ngăn xếp chồng lên nhau. com

Xóa Từ điển trùng lặp được đặc trưng bởi Khóa

test_list = [{"A": 6, "is": 19, "best": 1},
             {"A": 8, "is": 11, "best": 9},
             {"A": 2, "is": 16, "best": 1},
             {"A": 12, "is": 11, "best": 8},
             {"A": 22, "is": 16, "best": 8}]

# initializing Key 
K = "best"

memo = set[]
res = []
for sub in test_list:

    # testing for already present value
    if sub[K] not in memo:
        res.append[sub]

        # adding in memo if new value
        memo.add[sub[K]]

# printing result 
print[str[res]]

đầu ra. [{'MỘT'. 6, 'là'. 19, 'tốt nhất'. 1}, {'A'. 8, 'là'. 11, 'tốt nhất'. 9}, {'A'. 12, 'là'. 11, 'tốt nhất'. số 8}]

Hãy bình luận nếu bạn có bất kỳ nghi ngờ và đề xuất nào về chủ đề từ điển Python này

Ghi chú. IDE. PyCharm 2021. 3. 3 [Phiên bản cộng đồng]

cửa sổ 10

Trăn 3. 10. 1

Tất cả các Ví dụ về Python đều nằm trong Python 3, vì vậy có thể nó khác với python 2 hoặc các phiên bản nâng cấp

Rohit

Bằng cấp về Khoa học Máy tính và Kỹ sư. Nhà phát triển ứng dụng và có kinh nghiệm về nhiều ngôn ngữ lập trình. Đam mê công nghệ & thích học hỏi kỹ thuật

Tìm các bản sao trong Danh sách Python và Xóa các bản sao khỏi biến danh sách Python là các tác vụ khá phổ biến. Và đó là vì Danh sách Python có xu hướng thu thập các bản sao trong đó. Kiểm tra xem có trùng lặp hay không trong một biến danh sách là một nhiệm vụ phổ biến đối với các lập trình viên Python

May mắn thay, việc kiểm tra các bản sao trong Python tương đối dễ dàng. Và một khi bạn phát hiện ra chúng, bạn có thể thực hiện một số mục hành động

  • Chỉ liệt kê các giá trị trùng lặp
  • Xóa các giá trị trùng lặp và tạo một danh sách mới mà không có bất kỳ giá trị trùng lặp nào
  • Thay đổi danh sách hiện tại bằng cách chỉ xóa các bản trùng lặp, về cơ bản là loại bỏ trùng lặp danh sách hiện có
  • Chỉ cần đánh giá danh sách trùng lặp và báo cáo nếu có trùng lặp trong danh sách này
  • Đếm các bản sao trong danh sách

Nhưng trước khi tìm hiểu sâu hơn về từng nhiệm vụ này, tốt hơn hết là bạn nên nhanh chóng hiểu danh sách là gì và tại sao có thể tồn tại các danh sách trùng lặp trong danh sách Python

Tôi cũng muốn bạn biết về kiểu dữ liệu Set trong ngôn ngữ lập trình Python. Khi bạn biết điểm độc đáo và sự khác biệt của chúng, bạn sẽ đánh giá cao hơn các phương pháp được sử dụng để xác định và loại bỏ các bản sao khỏi danh sách Python

Danh sách trong Python là gì

Một danh sách trong Python giống như một mảng. Nó là một tập hợp các đối tượng, được lưu trữ trong một biến duy nhất. Một danh sách có thể thay đổi. Bạn có thể thêm hoặc xóa các phần tử khỏi danh sách Python. Một danh sách cũng có thể được sắp xếp. Nhưng theo mặc định, một danh sách không được sắp xếp

Danh sách Python cũng có thể chứa các bản sao và nó cũng có thể chứa nhiều phần tử thuộc các loại dữ liệu khác nhau. Bằng cách này, bạn có thể lưu trữ số nguyên, số dấu chấm động, số dương hoặc số âm, chuỗi và thậm chí cả giá trị boolean trong danh sách

Danh sách Python cũng có thể chứa các danh sách khác bên trong nó và có thể phát triển đến bất kỳ kích thước nào. Nhưng các danh sách được coi là chậm hơn trong việc truy cập các phần tử, so với Tuples. Vì vậy, một số phương pháp phù hợp hơn cho danh sách nhỏ và những phương pháp khác phù hợp hơn cho danh sách lớn. Nó phần lớn phụ thuộc vào kích thước danh sách

Bạn xác định một danh sách bằng cách đặt các phần tử trong dấu ngoặc vuông. Mỗi phần tử được phân tách bằng dấu phẩy trong danh sách

Tập hợp trong Python là gì?

Tập hợp là một loại dữ liệu khác có sẵn trong Python. Tại đây, bạn cũng có thể lưu trữ nhiều mục trong một Bộ. Nhưng một bộ khác với danh sách python ở chỗ một bộ không thể chứa các bản sao

Bạn có thể xác định Tập hợp bằng dấu ngoặc nhọn, so với danh sách, được xác định bằng cách sử dụng dấu ngoặc vuông

Một Set trong Python không được sắp xếp hoặc lập chỉ mục. Có thể là mỗi khi bạn truy cập vào một chỉ mục cụ thể từ một tập hợp, bạn sẽ nhận được một giá trị khác

Khi bạn đã tạo một Tập hợp trong Python, bạn có thể thêm các phần tử vào đó, nhưng bạn không thể thay đổi các phần tử hiện có

Bây giờ bạn đã hiểu cơ bản về danh sách và hiểu về Đặt kiểu dữ liệu trong Python, chúng ta sẽ khám phá việc xác định và loại bỏ các bản sao trong Danh sách Python

Nhiều cách để kiểm tra xem có tồn tại trùng lặp trong danh sách Python không

  • Độ dài của Danh sách và độ dài của Tập hợp khác nhau
  • Kiểm tra từng phần tử trong tập hợp. nếu có, dup, nếu không, thêm
  • Kiểm tra danh sách. đếm [] cho từng phần tử

Chúng tôi sẽ sử dụng Python 3 làm ngôn ngữ. Vì vậy, miễn là bạn có bất kỳ phiên bản nào của trình biên dịch Python 3, bạn có thể sử dụng được

Phương pháp 1. Sử dụng độ dài của danh sách để xác định xem nó có chứa các phần tử trùng lặp hay không

Hãy viết chương trình Python để kiểm tra điều này

# this input list contains duplicates
mylist = [5, 3, 5, 2, 1, 6, 6, 4] # 5 & 6 are duplicate numbers.

# find the length of the list
print[len[mylist]]
8

# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]
6
# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]
6

Như bạn có thể thấy, độ dài của biến mylist là 8 và độ dài của myset là 6

# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]

đầu ra

6

Đây là chương trình Python cuối cùng – mã đầy đủ có thể được sao chép và dán vào chương trình Python và được sử dụng để kiểm tra xem các mục giống hệt nhau có tồn tại trong danh sách hay không

# this input list contains duplicates
mylist = [5, 3, 5, 2, 1, 6, 6, 4] # 5 & 6 are duplicate numbers.

# find the length of the list
print[len[mylist]]

# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]

# compare the length and print if the list contains duplicates
if len[mylist] != len[myset]:
    print["duplicates found in the list"]
else:
    print["No duplicates found in the list"]

đầu ra

________số 8

Ngoài ra, chúng tôi có thể tạo một chức năng sẽ kiểm tra xem các mục trùng lặp có tồn tại hay không và sẽ trả về Đúng hoặc Sai để cảnh báo chúng tôi về các mục trùng lặp

Đây là chức năng hoàn chỉnh để kiểm tra xem có tồn tại trùng lặp trong danh sách Python không

def is_duplicate[anylist]:
    if type[anylist] != 'list':
        return["Error. Passed parameter is Not a list"]
    if len[anylist] != len[set[anylist]]:
        return True
    else:
        return False

mylist = [5, 3, 5, 2, 1, 6, 6, 4] # you can see some repeated number in the list.
if is_duplicate[mylist]:
    print["duplicates found in list"]
else:
    print["no duplicates found in list"]

Đầu ra của mã Python này là

l = [{'a': 10, 'b': 4},
     {'a': 20, 'b': 4},
     {'a': 10, 'b': 4}]

seen = set[]
new_l = []
for d in l:
    t = tuple[d.items[]]
    if t not in seen:
        seen.add[t]
        new_l.append[d]

print[new_l]
0

Phương pháp 2. Liệt kê các bản sao trong một danh sách & Liệt kê các giá trị duy nhất – được sắp xếp

Trong phương pháp này, chúng tôi sẽ tạo các danh sách khác nhau để sử dụng khác nhau - một danh sách có các khóa trùng lặp hoặc giá trị lặp lại và các danh sách khác nhau cho các khóa duy nhất. Một vài dòng mã có thể làm nên điều kỳ diệu trong chương trình Python

l = [{'a': 10, 'b': 4},
     {'a': 20, 'b': 4},
     {'a': 10, 'b': 4}]

seen = set[]
new_l = []
for d in l:
    t = tuple[d.items[]]
    if t not in seen:
        seen.add[t]
        new_l.append[d]

print[new_l]
1

đầu ra

l = [{'a': 10, 'b': 4},
     {'a': 20, 'b': 4},
     {'a': 10, 'b': 4}]

seen = set[]
new_l = []
for d in l:
    t = tuple[d.items[]]
    if t not in seen:
        seen.add[t]
        new_l.append[d]

print[new_l]
2

Và nếu bạn muốn sắp xếp các mục trong danh sách sau khi loại bỏ các mục trùng lặp, bạn có thể sử dụng hàm sẵn có có tên là sắp xếp trên danh sách các số

# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]
6
0

đầu ra

# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]
6
1

Phương pháp 3. Chỉ liệt kê các giá trị trùng lặp với Phương thức đếm

Phương thức này lặp qua từng phần tử của toàn bộ danh sách và kiểm tra xem số lượng của từng phần tử có lớn hơn 1 không. Nếu có, mục đó được thêm vào một bộ. Nếu bạn nhớ, một bộ không thể chứa bất kỳ bản sao nào, theo thiết kế. Trong đoạn mã sau, đối với các mục tồn tại nhiều lần, chỉ những phần tử lặp lại đó mới được thêm vào tập hợp

# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]
6
2

đầu ra

# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]
6
3

Hãy nhớ rằng các giá trị trùng lặp được liệt kê có thể đã tồn tại một lần hoặc trước đó.

Cách nhanh nhất để loại bỏ các bản sao khỏi danh sách Python

Một trong những cách nhanh nhất để loại bỏ trùng lặp là tạo một tập hợp từ biến danh sách. Tất cả điều này có thể được thực hiện chỉ trong một câu lệnh Python. Đây là phương pháp nhanh nhất, vì vậy nó phù hợp hơn với các danh sách lớn

Đây là mã cuối cùng trong Python – có lẽ là cách tốt nhất…

# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]
6
4

đầu ra

# create a set from the list
myset = set[mylist]

# find the length of the Python set variable myset
print[len[myset]]
6
5

Cách tránh trùng lặp trong danh sách Python

Điều đầu tiên bạn phải nghĩ đến là – Tại sao tôi lại sử dụng một danh sách trong Python?

Bởi vì nó có thể thu thập các bản sao. Nếu bạn hoàn toàn rõ ràng rằng không có bản sao nào tồn tại trong bất kỳ thứ gì bạn đang thu thập hoặc lưu trữ, thì đừng sử dụng danh sách. Thay vào đó, cách tốt hơn là sử dụng Set. Một bộ được xây dựng để từ chối trùng lặp, vì vậy đây là giải pháp tốt hơn. Bạn nên khám phá các bộ nhiều hơn một chút để hiểu rõ hơn về bộ. Nó có thể là một trình tiết kiệm thời gian thực vì đây là một cách hiệu quả hơn

Nếu bạn không quan tâm đến thứ tự thì chỉ cần sử dụng set[mylist] sẽ thực hiện công việc loại bỏ mọi trùng lặp. Đây là những gì tôi sử dụng, ngay cả trong trường hợp xấu nhất khi toàn bộ danh sách đến là một danh sách bẩn gồm nhiều phần tử trùng lặp

Ngoài ra, nếu bạn thực sự phải sử dụng danh sách vì những điều bạn có thể làm với kiểu dữ liệu danh sách, hãy thực hiện kiểm tra đơn giản trước khi thêm bất kỳ phần tử nào

Ví dụ: bạn có thể sắp xếp một danh sách, nhưng không phải là Tập hợp trong Python. Nó có thể hữu ích cho các danh sách lớn

Vì vậy, trước khi bạn thêm bất kỳ phần tử mới nào vào danh sách, chỉ cần kiểm tra nhanh sự tồn tại của giá trị. Nếu phần tử tồn tại, thì đừng lưu trữ nó. Đơn giản

Các phương pháp được thảo luận ở trên hoạt động trên bất kỳ danh sách các phần tử nào. Vì vậy, nếu bạn muốn tìm các chuỗi trùng lặp hoặc số nguyên trùng lặp hoặc số thực trùng lặp hoặc bất kỳ loại đối tượng trùng lặp nào, bạn có thể sử dụng các chương trình Python này

Hy vọng các cách khác nhau để tìm các bản sao, liệt kê chúng và cuối cùng loại bỏ hoàn toàn các phần tử trùng lặp khỏi bất kỳ danh sách Python nào bằng các chương trình và phương pháp đơn giản sẽ hữu ích cho việc xử lý và hiểu danh sách của bạn

Vinai Prakash

Vinai là Founder & Master Trainer tại Intellisoft Training. Anh ấy viết về công nghệ, nâng cấp kỹ năng và thích chia sẻ các mẹo và thủ thuật của mình để cải thiện năng suất hàng ngày và hoàn thành nhiều việc hơn. Intellisoft cung cấp chứng chỉ ICDL, đào tạo Adobe CC, Microsoft Office tại Singapore. Chúng tôi là ATO của SSG và trung tâm kiểm tra ICDL được ủy quyền

Để lại một câu trả lời

Tìm kiếm

Theo chúng tôi

Facebook-f Youtube

Bài viết gần đây

Cách tổ chức một bài thuyết trình

Đọc thêm "

Bạn có mắc phải những lỗi trình bày này không?

Đọc thêm "

Câu hỏi thường gặp về Microsoft Excel

Đọc thêm "

Sử dụng công cụ Rectangular Marquee trong Photoshop

Đọc thêm "

Chuyển đổi bất kỳ ảnh nào sang đen trắng trong Photoshop

Đọc thêm "

Infographics là gì?

Đọc thêm "

Thể loại

  • AdobePhotoshop
  • Điện toán đám mây
  • Kĩ năng giao tiếp
  • Khái niệm cơ bản về máy tính
  • Tiếp thị kỹ thuật số
  • Huấn luyện nhân viên
  • Hướng dẫn của Intellisoft – Các khóa học được tài trợ bởi WSQ
  • Microsoft Excel
  • Đào tạo Microsoft Office
  • Kỹ thuật trình bày
  • Đào tạo Python
  • Các kĩ năng mềm
  • Đào Tạo Thiết Kế Web

Hướng dẫn hàng tuần

thẻ

Adobe Photoshop Mẹo Adobe Photoshop Đào tạo Adobe Photoshop Nâng cao Excel Đào tạo lợi ích của giáo dục lợi ích của việc đào tạo nhân viên chức năng excel thông thường cơ bản về máy tính máy tính cho người mới bắt đầu công thức excel chức năng excel chức năng excel trục excel đào tạo excel khóa đào tạo excel chứng chỉ excel wsq đào tạo do chính phủ tài trợ tài trợ cho đào tạo như thế nào . quỹ đào tạo các hàm excel hữu ích vlookup trong Excel 2013 đào tạo vlookup Singapore các khóa học wda excel khóa học wda khóa học wsq khóa học wsq adobe Khóa học chứng nhận WSQ khóa học cấp chứng chỉ wsq khóa học wsq khóa học excel wsq tài trợ wsq tài trợ WSQ cho đào tạo photoshop

Làm cách nào để kiểm tra lệnh trùng lặp trong danh sách Python?

Cách tìm các bản sao trong danh sách và đếm chúng bằng Python .
Chúng tôi nhập lớp Counter từ thư viện bộ sưu tập
Chúng tôi tải danh sách các số của chúng tôi
Sau đó, chúng tôi tạo một đối tượng Bộ đếm trong danh sách của mình và chuyển đổi nó thành từ điển
Sau đó, chúng tôi lọc từ điển của mình để xóa bất kỳ khóa nào. cặp giá trị trong đó khóa chỉ tồn tại một lần

Làm cách nào để xóa từ điển trùng lặp khỏi danh sách từ điển trong Python?

Sử dụng everseen[] duy nhất để Xóa từ điển trùng lặp trong danh sách. Hàm everseen[] được sử dụng để tìm tất cả các phần tử duy nhất có trong iterable và giữ nguyên thứ tự xuất hiện của chúng. Do đó, nó ghi nhớ tất cả các phần tử từng thấy trong iterable.

Làm cách nào để tìm các giá trị khóa trùng lặp trong từ điển Python?

Bạn không thể có các khóa trùng lặp trong từ điển bằng Python .

Danh sách có thể có các giá trị trùng lặp trong Python không?

Danh sách Python có thể chứa các phần tử trùng lặp .

Chủ Đề