Hướng dẫn do sets have order in python? - các bộ có thứ tự trong python không?

Lập trình chủ yếu là về việc xử lý dữ liệu. Là một nhà phát triển Python, bạn sẽ tìm cách lưu trữ dữ liệu theo cách phù hợp với các mục tiêu của bạn. Đôi khi, bạn sẽ cần bảo quản thứ tự chèn dữ liệu trong một bộ, ví dụ, nếu bạn đang xử lý các giao dịch ngân hàng. Mỗi giao dịch phải là duy nhất, và điều quan trọng là bảo tồn thứ tự các giao dịch được tạo. Các bộ đặt hàng Python đã giúp bạn làm điều đó.

Trong bài viết này, chúng tôi sẽ giải thích khái niệm lập trình của một tập hợp được đặt hàng, trước khi chỉ cho bạn cách tạo một trong chương trình Python.

Một bộ trong Python là gì?

Trong ngôn ngữ lập trình Python, một bộ là một tập hợp các yếu tố độc đáo. Đó là một cấu trúc dữ liệu dựa trên bảng băm với thứ tự phần tử không xác định. Bạn có thể duyệt một phần tử tập hợp, thêm hoặc xóa chúng và thực hiện các hoạt động thiết lập tiêu chuẩn của liên minh, giao lộ, bổ sung và khác biệt.

Không giống như danh sách, các bộ thông thường không bảo tồn thứ tự mà chúng tôi chèn các yếu tố. Điều này là do các phần tử trong một bộ thường không được lưu trữ theo thứ tự chúng xuất hiện. & NBSP;

Bộ đặt hàng là gì?

Không giống như trong một bộ tiêu chuẩn, thứ tự của dữ liệu trong một tập hợp được đặt hàng được bảo tồn. Chúng tôi đã sử dụng các bộ được đặt hàng khi chúng tôi cần thứ tự chúng tôi nhập dữ liệu để được duy trì trong suốt quá trình của chương trình. Trong một tập hợp được đặt hàng, nhìn vào dữ liệu không thay đổi thứ tự như trong một tập hợp không được đặt hàng.

Cách tạo một bộ được đặt hàng trong Python

Python cho phép bạn tạo các bộ được đặt hàng trong các chương trình của bạn. Dưới đây, chúng tôi sẽ trình diễn hai cách để làm như vậy: sử dụng gói đặt hàng Python, và phương pháp thủ công. Nhưng trước tiên, hãy để thiết lập một bối cảnh. Hãy để nói rằng bạn đang phát triển một ứng dụng cho một ngân hàng mà bạn cần ghi lại số giao dịch này đến số khác trong một tài liệu tóm tắt. Mỗi hoạt động giao dịch ngân hàng là duy nhất.

Ngoài ra, bạn muốn thứ tự các giao dịch được thực hiện để phản ánh chính xác trong tập dữ liệu của bạn. Đây là một cơ hội hoàn hảo để bạn sử dụng lớp đặt hàng có trong gói PythonTHER Ordered_set.

Python sườn đặt hàng lớp tập hợp

Cách đơn giản nhất để tạo một tập hợp được đặt hàng trong Python là sử dụng lớp

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
1. Lưu ý rằng lớp này không được bao gồm theo mặc định. Trước tiên bạn cần đảm bảo bạn đã cài đặt gói đặt hàng.

Lưu ý rằng Set-set là gói của bên thứ ba và chức năng của nó có thể thay đổi độc lập với phiên bản Python mà bạn sử dụng. Để cài đặt gói, hãy nhập lệnh sau vào thiết bị đầu cuối của bạn:


Điều này sẽ cho phép bạn sử dụng

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
1Class.

Bây giờ, bạn có thể tạo một chương trình Python sử dụng

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
1Class. Hãy để xem một bộ đơn đặt hàng đơn giản trông như thế nào: & nbsp;

from ordered_set import OrderedSet
setTest = OrderedSet(["First", "Second", "Second", "Third"])
print(setTest)

Đầu tiên, chúng tôi nhập

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
4Package mới cài đặt. Sau đó, chúng tôi tạo một đối tượng ra khỏi
from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
1Class, chuyển các thành viên dưới dạng tham số. Câu lệnh in trong ví dụ này xuất ra như sau: & nbsp;

OrderedSet(['First', 'Second', 'Third'])

Chuỗi ’thứ hai mà chúng tôi đã nhập hai lần khi tạo tập hợp đã biến mất, trong khi thứ tự chúng tôi nhập dữ liệu được duy trì.

Bây giờ, hãy để tạo ra một bộ giao dịch ngân hàng được đặt hàng. Trong một kịch bản trong thế giới thực, bạn sẽ muốn giữ thứ tự chèn vào vị trí, để cho phép bạn phân tích các giao dịch, kiểm tra gian lận, v.v. Đây là cách chương trình có thể trông:

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...

Bộ đặt hàng được tạo ra.

Bây giờ, nếu bạn muốn một giao dịch nhất định, bạn có thể chọn bộ mục tương ứng bằng chỉ mục của nó:

...print("Transaction no",bankStatement[1],"has been recorded successfully")

Điều này cung cấp cho bạn đầu ra sau:

Transaction no BK0002 has been recorded successfully

Nhưng điều gì sẽ xảy ra nếu ai đó muốn thêm một giao dịch đã được ghi lại, chẳng hạn như là BK0004 thì? Nếu chúng tôi đã sử dụng một danh sách, hành động này sẽ có thể. May mắn thay, bộ đặt hàng không cho phép nó. Hãy cùng chạy mã sau: & nbsp;

bankTrs.add("BK0004")

print(bankTrs)

Kết quả của câu lệnh in vẫn không thay đổi, chứng minh rằng tập hợp được đặt hàng đã bỏ qua hành động:

OrderedSet(['BK0001', 'BK0002', 'BK0003', 'BK0004', 'BK0005'])


Tính năng này chứng tỏ đặc biệt hữu ích trong trường hợp này. Là một lập trình viên, bạn đã giành chiến thắng phải lo lắng về việc đảm bảo rằng mỗi thành viên dữ liệu là duy nhất.

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
6Package chứa các tính năng đáng chú ý khác. Nó cho phép bạn thực hiện các hoạt động hữu ích như sự khác biệt, giao lộ và liên minh bằng cách sử dụng các toán tử -, & và |. & NBSP;

Đặt hoạt động

Hãy để viết lại chương trình để tạo hai bộ được đặt hàng khác nhau có thể đại diện cho hai báo cáo ngân hàng.

from ordered_set import OrderedSet
bankStatement1 = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])
bankStatement2 = OrderedSet(["BK0004","BK0005","BK0006","BK0007","BK0008"])

Chúng tôi cố tình bao gồm các giao dịch

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
7and
from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
8in cả hai câu lệnh. Đó có thể là trường hợp nếu câu lệnh thứ nhất và thứ hai bao gồm một phần cùng khoảng thời gian.

Nếu bạn muốn xem các giao dịch chỉ tồn tại trong

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
9, chỉ cần chạy bit mã sau:

diff  = bankStatement1 - bankStatement2
print("The transactions unique to the first summary are",diff)

Điều này cho chúng ta kết quả sau:

The transactions unique to the first summary are OrderedSet(['BK0001', 'BK0002', 'BK0003'])

Đối với mục đích dễ đọc, chúng tôi có thể gửi kèm theo bộ đã đặt hàng ____3030within

...print("Transaction no",bankStatement[1],"has been recorded successfully")
1 khi hiển thị dữ liệu bằng mã này:

OrderedSet(['First', 'Second', 'Third'])
0

Bây giờ, nếu bạn chỉ cần truy xuất các giao dịch tồn tại trong cả hai câu lệnh, hãy sử dụng câu lệnh giao nhau như vậy:

OrderedSet(['First', 'Second', 'Third'])
1

Bạn sẽ nhận được kết quả dự định:

OrderedSet(['First', 'Second', 'Third'])
2

Cuối cùng, nếu bạn muốn xem tất cả các giao dịch của cả hai câu lệnh, chỉ cần thực hiện hoạt động của công đoàn:

OrderedSet(['First', 'Second', 'Third'])
3

Điều này sẽ cung cấp cho bạn đầu ra sau:

OrderedSet(['First', 'Second', 'Third'])
4

...print("Transaction no",bankStatement[1],"has been recorded successfully")
2Package làm cho việc tạo và thao tác các bộ được đặt hàng trong Python đơn giản và hiệu quả.

Phương pháp thủ công

Cũng có thể tạo một bộ dữ liệu được đặt hàng hoàn toàn bằng tay. Trong trường hợp bạn không thể sử dụng

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
6Package, bạn vẫn có thể sử dụng cách giải quyết này. Hãy để xem cách thức hoạt động của phương pháp này. & NBSP;


Đầu tiên, chúng tôi sẽ tạo một

...print("Transaction no",bankStatement[1],"has been recorded successfully")
4Array chứa bộ dữ liệu của chúng tôi:

OrderedSet(['First', 'Second', 'Third'])
5


Sau đó, chúng tôi tạo một vòng

...print("Transaction no",bankStatement[1],"has been recorded successfully")
5 kiểm tra từng phần tử, tìm kiếm các bản sao. Nếu có bất kỳ, chúng sẽ bị xóa khỏi bộ. Để kiểm tra điều này, chúng tôi sẽ cố tình bao gồm một yếu tố trùng lặp trong mảng.

OrderedSet(['First', 'Second', 'Third'])
6

...print("Transaction no",bankStatement[1],"has been recorded successfully")
5Loop bắt đầu lặp lại từ mặt sau của danh sách, nghĩa là, từ phần tử cuối cùng. Nó lấy phần tử đó (được gọi là
...print("Transaction no",bankStatement[1],"has been recorded successfully")
4Above) và kiểm tra xem nó đã có trong tập hợp con của danh sách cho đến khi nhưng không bao gồm phần tử hiện tại (
...print("Transaction no",bankStatement[1],"has been recorded successfully")
4). Nếu nó đã có mặt, chúng tôi sẽ xóa đề cập đến phần tử gần hơn với mặt trước của danh sách, nhưng hãy giữ đề cập ban đầu về phần tử gần hơn với mặt sau của danh sách.

Bây giờ, khi chúng tôi in nội dung mảng, không có bản sao và thứ tự được duy trì:

OrderedSet(['First', 'Second', 'Third'])
7

Điều này cho phép chúng tôi tạo một bộ được đặt hàng ngay cả khi chúng tôi không thể sử dụng tính năng chuyên dụng của Python!

Học cách viết mã trực tuyến

Python là ngôn ngữ lập trình đa năng với một vài tùy chọn để tạo các bộ được đặt hàng. Bạn có thể sử dụng lớp

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
1 để hoàn thành công việc hoặc bạn có thể làm như vậy bằng tay nếu cần.

Bạn muốn vượt ra ngoài việc tạo ra sự sáng tạo trong Python?

Giới thiệu do chuyên gia của Udacity, được thiết kế cho chương trình nanodegree lập trình là bước tiếp theo của bạn. Đến cuối khóa học này, bạn sẽ biết những điều cơ bản về mã hóa và có các kỹ năng để tự tin quản lý các kịch bản lập trình trong thế giới thực bằng cách sử dụng HTML, CSS, Python, v.v.

Hoàn thành các ví dụ mã

Ví dụ 1: Tạo đơn đặt hàng giao dịch ngân hàng

OrderedSet(['First', 'Second', 'Third'])
8

Ví dụ 2: khác biệt, liên minh, giao lộ

OrderedSet(['First', 'Second', 'Third'])
9

Ví dụ 3: Phương pháp thủ công

from ordered_set import OrderedSet
bankStatement = OrderedSet(["BK0001","BK0002","BK0003","BK0004","BK0005"])...
0

Các bộ luôn được sắp xếp trong Python?

Danh sách.Sắp xếp () đã thiết lập quy ước sắp xếp () sắp xếp đối tượng tại chỗ, nhưng một tập hợp không thể được sắp xếp tại chỗ vì các bộ không được đặt hàng.a set cannot be sorted in place because sets are unordered.

Đặt ra lệnh python có đảm bảo không?

Câu trả lời là không, nhưng bạn có thể sử dụng các bộ sưu tập.Đặt hàng từ thư viện tiêu chuẩn Python chỉ với các khóa (và giá trị là không có) cho cùng một mục đích.CẬP NHẬT: Kể từ Python 3.7 (và CPython 3.6), Dict Standard được đảm bảo để bảo tồn trật tự và có hiệu suất hơn so với lệnh.standard dict is guaranteed to preserve order and is more performant than OrderedDict .

Các bộ có được đặt hàng không?

Một bộ không được đặt hàng trừ khi bạn cung cấp đơn đặt hàng.Một bộ riêng của nó không phải là một tập hợp đặt hàng.. A set on its own is not an ordered set.