Hướng dẫn dùng duplication removal python - sử dụng python loại bỏ trùng lặp

Đưa ra một danh sách các chuỗi, tôi muốn sắp xếp nó theo thứ tự bảng chữ cái và loại bỏ các bản sao. Tôi biết tôi có thể làm điều này:

Nội dung chính ShowShow

  • Làm thế nào để bạn sắp xếp và loại bỏ các bản sao trong Python?
  • Làm cách nào để sắp xếp và loại bỏ các bản sao?
  • Cách dễ nhất để loại bỏ các bản sao trong Python là gì?
  • Làm thế nào để bạn sắp xếp mà không lặp lại trong Python?

from sets import Set
[...]
myHash = Set(myList)

Nhưng tôi không biết làm thế nào để truy xuất các thành viên danh sách từ băm theo thứ tự bảng chữ cái.

Tôi chưa kết hôn với băm, vì vậy bất kỳ cách nào để thực hiện điều này sẽ hoạt động. Ngoài ra, hiệu suất không phải là một vấn đề, vì vậy tôi thích một giải pháp được thể hiện trong mã rõ ràng là một giải pháp nhanh nhưng mờ hơn.

hỏi ngày 26 tháng 1 năm 2009 lúc 14:09Jan 26, 2009 at 14:09Jan 26, 2009 at 14:09

Josh Gloverjosh GloverJosh GloverJosh Glover

24.1K26 Huy hiệu vàng86 Huy hiệu bạc128 Huy hiệu đồng26 gold badges86 silver badges128 bronze badges26 gold badges86 silver badges128 bronze badges

3

Một danh sách có thể được sắp xếp và sao chép bằng các chức năng tích hợp:

myList = sorted(set(myList))
  • myList = sorted(set(myList))
    
    0 là chức năng tích hợp cho Python> = 2.3
  • myList = sorted(set(myList))
    
    1 là chức năng tích hợp cho Python> = 2.4

Bengt

13,5K6 Huy hiệu vàng47 Huy hiệu bạc65 Huy hiệu Đồng6 gold badges47 silver badges65 bronze badges6 gold badges47 silver badges65 bronze badges

Đã trả lời ngày 26 tháng 1 năm 2009 lúc 14:16Jan 26, 2009 at 14:16Jan 26, 2009 at 14:16

8

Nếu đầu vào của bạn đã được sắp xếp, thì có thể có một cách đơn giản hơn để làm điều đó:

from operator import itemgetter
from itertools import groupby
unique_list = list(map(itemgetter(0), groupby(yourList)))

Đã trả lời ngày 26 tháng 1 năm 2009 lúc 14:48Jan 26, 2009 at 14:48Jan 26, 2009 at 14:48

3

Nếu bạn muốn giữ thứ tự của danh sách ban đầu, chỉ cần sử dụng OrderedDict với

myList = sorted(set(myList))
2 làm giá trị.

Trong Python2:

    from collections import OrderedDict
    from itertools import izip, repeat

    unique_list = list(OrderedDict(izip(my_list, repeat(None))))

Trong Python3, nó thậm chí còn đơn giản hơn:

    from collections import OrderedDict
    from itertools import repeat

    unique_list = list(OrderedDict(zip(my_list, repeat(None))))

Nếu bạn không thích Iterators (Zip và Lặp lại), bạn có thể sử dụng Trình tạo (hoạt động cả trong 2 & 3):

    from collections import OrderedDict
    unique_list = list(OrderedDict((element, None) for element in my_list))

Đã trả lời ngày 10 tháng 5 năm 2016 lúc 9:49May 10, 2016 at 9:49May 10, 2016 at 9:49

Nếu đó là sự rõ ràng của bạn theo sau, thay vì tốc độ, tôi nghĩ điều này rất rõ ràng:

def sortAndUniq(input):
  output = []
  for x in input:
    if x not in output:
      output.append(x)
  output.sort()
  return output

Mặc dù vậy, đó là O (n^2), với việc sử dụng lặp đi lặp lại không cho mỗi yếu tố của danh sách đầu vào.

Đã trả lời ngày 26 tháng 1 năm 2009 lúc 14:16Jan 26, 2009 at 14:16Jan 26, 2009 at 14:16

Nếu đầu vào của bạn đã được sắp xếp, thì có thể có một cách đơn giản hơn để làm điều đó:unwind

Đã trả lời ngày 26 tháng 1 năm 2009 lúc 14:48Jan 26, 2009 at 14:4864 gold badges462 silver badges595 bronze badges

0

Nếu bạn muốn giữ thứ tự của danh sách ban đầu, chỉ cần sử dụng OrderedDict với

myList = sorted(set(myList))
2 làm giá trị.

Trong Python2:

myList = sorted(set(myList))
1

Trong Python3, nó thậm chí còn đơn giản hơn:

myList = sorted(set(myList))
2

Nếu bạn không thích Iterators (Zip và Lặp lại), bạn có thể sử dụng Trình tạo (hoạt động cả trong 2 & 3):Jan 26, 2009 at 15:22

Đã trả lời ngày 10 tháng 5 năm 2016 lúc 9:49May 10, 2016 at 9:49davidavr

Nếu đó là sự rõ ràng của bạn theo sau, thay vì tốc độ, tôi nghĩ điều này rất rõ ràng:4 gold badges27 silver badges31 bronze badges

Mặc dù vậy, đó là O (n^2), với việc sử dụng lặp đi lặp lại không cho mỗi yếu tố của danh sách đầu vào.

myList = sorted(set(myList))
3

Nếu đầu vào của bạn đã được sắp xếp, thì có thể có một cách đơn giản hơn để làm điều đó:unwindJun 26, 2013 at 9:36

Làm thế nào để bạn sắp xếp và loại bỏ các bản sao trong Python?

Đã trả lời ngày 26 tháng 1 năm 2009 lúc 14:4864 gold badges462 silver badges595 bronze badges.

Nếu bạn không thích Iterators (Zip và Lặp lại), bạn có thể sử dụng Trình tạo (hoạt động cả trong 2 & 3):Jan 26, 2009 at 15:22

Đã trả lời ngày 10 tháng 5 năm 2016 lúc 9:49davidavr

Nếu đó là sự rõ ràng của bạn theo sau, thay vì tốc độ, tôi nghĩ điều này rất rõ ràng:4 gold badges27 silver badges31 bronze badges

Khả năng thư giãnJun 26, 2013 at 9:36

5 cách để loại bỏ các bản sao khỏi danh sách trong Python..

Làm cách nào để sắp xếp và loại bỏ các bản sao?

Phương pháp 1: Phương pháp ngây thơ .. To remove duplicate values, click Data > Data Tools > Remove Duplicates. To highlight unique or duplicate values, use the Conditional Formatting command in the Style group on the Home tab.

Cách dễ nhất để loại bỏ các bản sao trong Python là gì?

Phương pháp 2: Sử dụng danh sách toàn diện ...

Phương pháp 3: Sử dụng Set ().

Phương pháp 4: Sử dụng danh sách toàn diện + Enumerate ().

Phương pháp 5: Sử dụng bộ sưu tập. Đặt hàng. FromKeys ().

Để lọc cho các giá trị duy nhất, nhấp vào Dữ liệu> Sắp xếp & Bộ lọc> Nâng cao. Để xóa các giá trị trùng lặp, nhấp vào dữ liệu> Công cụ dữ liệu> Xóa các bản sao. Để làm nổi bật các giá trị độc đáo hoặc trùng lặp, hãy sử dụng lệnh định dạng có điều kiện trong nhóm kiểu trên tab Home.To remove duplicate values, click Data > Data Tools > Remove Duplicates. To highlight unique or duplicate values, use the Conditional Formatting command in the Style group on the Home tab.

Có nhiều cách để loại bỏ các bản sao khỏi danh sách Python ...

Làm thế nào để bạn sắp xếp mà không lặp lại trong Python?

Sử dụng một danh sách tạm thời và vòng lặp ..Using count() + set() + sorted() The sorted function can be used to sort the elements as desired, the frequency can be computed using the count function and removal of duplicates can be handled using the set function.