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ố 8Ngoà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]
0Phươ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]
2Và 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]] 60
đầu ra
# create a set from the list myset = set[mylist] # find the length of the Python set variable myset print[len[myset]] 61
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]] 62
đầu ra
# create a set from the list myset = set[mylist] # find the length of the Python set variable myset print[len[myset]] 63
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]] 64
đầu ra
# create a set from the list myset = set[mylist] # find the length of the Python set variable myset print[len[myset]] 65
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