Nhập lệnh python

Trong python 2, các hàm

import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
4,
import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
5 và
import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
6 của danh sách trả về
import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
0. Sử dụng
import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
1 làm ví dụ, cách đơn giản nhất là

d.values[][0]  # "python"
d.values[][1]  # "spam"

Đối với các bộ sưu tập lớn mà bạn chỉ quan tâm đến một chỉ mục duy nhất, bạn có thể tránh tạo danh sách đầy đủ bằng cách sử dụng các phiên bản trình tạo,

import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
2,
import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
3 và
import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
4

import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"

được lập chỉ mục. gói py cung cấp

import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
5, được thiết kế cho trường hợp sử dụng này và sẽ là tùy chọn nhanh nhất

________số 8

Sử dụng các giá trị lặp có thể nhanh hơn đáng kể đối với các từ điển lớn có quyền truy cập ngẫu nhiên

$ python2 -m timeit -s 'from collections import OrderedDict; from random import randint; size = 1000;   d = OrderedDict[{i:i for i in range[size]}]'  'i = randint[0, size-1]; d.values[][i:i+1]'
1000 loops, best of 3: 259 usec per loop
$ python2 -m timeit -s 'from collections import OrderedDict; from random import randint; size = 10000;  d = OrderedDict[{i:i for i in range[size]}]' 'i = randint[0, size-1]; d.values[][i:i+1]'
100 loops, best of 3: 2.3 msec per loop
$ python2 -m timeit -s 'from collections import OrderedDict; from random import randint; size = 100000; d = OrderedDict[{i:i for i in range[size]}]' 'i = randint[0, size-1]; d.values[][i:i+1]'
10 loops, best of 3: 24.5 msec per loop

$ python2 -m timeit -s 'from collections import OrderedDict; from random import randint; size = 1000;   d = OrderedDict[{i:i for i in range[size]}]' 'i = randint[0, size-1]; next[itertools.islice[d.itervalues[], i, i+1]]'
10000 loops, best of 3: 118 usec per loop
$ python2 -m timeit -s 'from collections import OrderedDict; from random import randint; size = 10000;  d = OrderedDict[{i:i for i in range[size]}]' 'i = randint[0, size-1]; next[itertools.islice[d.itervalues[], i, i+1]]'
1000 loops, best of 3: 1.26 msec per loop
$ python2 -m timeit -s 'from collections import OrderedDict; from random import randint; size = 100000; d = OrderedDict[{i:i for i in range[size]}]' 'i = randint[0, size-1]; next[itertools.islice[d.itervalues[], i, i+1]]'
100 loops, best of 3: 10.9 msec per loop

$ python2 -m timeit -s 'from indexed import IndexedOrderedDict; from random import randint; size = 1000;   d = IndexedOrderedDict[{i:i for i in range[size]}]' 'i = randint[0, size-1]; d.values[][i]'
100000 loops, best of 3: 2.19 usec per loop
$ python2 -m timeit -s 'from indexed import IndexedOrderedDict; from random import randint; size = 10000;  d = IndexedOrderedDict[{i:i for i in range[size]}]' 'i = randint[0, size-1]; d.values[][i]'
100000 loops, best of 3: 2.24 usec per loop
$ python2 -m timeit -s 'from indexed import IndexedOrderedDict; from random import randint; size = 100000; d = IndexedOrderedDict[{i:i for i in range[size]}]' 'i = randint[0, size-1]; d.values[][i]'
100000 loops, best of 3: 2.61 usec per loop

+--------+-----------+----------------+---------+
|  size  | list [ms] | generator [ms] | indexed |
+--------+-----------+----------------+---------+
|   1000 | .259      | .118           | .00219  |
|  10000 | 2.3       | 1.26           | .00224  |
| 100000 | 24.5      | 10.9           | .00261  |
+--------+-----------+----------------+---------+

Trăn 3. 6

Python 3 có hai tùy chọn cơ bản giống nhau [danh sách so với trình tạo], nhưng các phương thức dict trả về trình tạo theo mặc định

phương pháp liệt kê

import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
0

phương pháp máy phát điện

import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
1

Từ điển Python 3 nhanh hơn nhiều so với python 2 và có tốc độ tăng tốc tương tự khi sử dụng trình tạo

Từ điển được đặt hàng trong python rất giống với từ điển trong python. Không có sự khác biệt lớn giữa chúng. Biểu diễn kỹ thuật của OrderedDict cũng rất giống với từ điển python. Nhưng điều quan trọng cần lưu ý ở đây là từ điển được đặt hàng là một mục nằm trong bộ sưu tập trong python. Vì vậy, các bộ chứa bộ sưu tập này về cơ bản là các loại dữ liệu thay thế cho các loại dữ liệu mặc định của python như dict, set, v.v.

Gói phát triển phần mềm tất cả trong một[hơn 600 khóa học, hơn 50 dự án]

Giá
Xem khóa học

600+ Khóa học trực tuyến. hơn 50 dự án. Hơn 3000 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập Trọn đời
4. 6 [83.348 xếp hạng]

Ở đây, OrderedDict là một kiểu dữ liệu nằm trong từ điển vùng chứa bộ sưu tập. Từ góc độ chức năng, các từ điển được sắp xếp này có khả năng ghi nhớ thứ tự nhập các giá trị. Vì vậy, sự sắp xếp trong đó các giá trị hiện diện được thực hiện rất tốt bởi kiểu dữ liệu OrderedDict. Vì vậy, khi một khóa mới được thêm vào hoặc một khóa hiện có được thay đổi, thứ tự sẽ được sắp xếp lại giống như khóa mới được thay đổi sẽ được đặt làm mục cuối cùng trong kiểu dữ liệu dict đã sắp xếp. Đây là điểm khác biệt chính giữa từ điển có thứ tự với từ điển thông thường

Bắt đầu khóa học phát triển phần mềm miễn phí của bạn

Phát triển web, ngôn ngữ lập trình, kiểm thử phần mềm và những thứ khác

Cú pháp của OrderedDict trong Python

Đưa ra dưới đây là cú pháp được đề cập

import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
2

Theo cú pháp trên, đầu tiên, lớp Ordered dictionary được nhập từ lớp collections. Điều này được thực hiện bằng câu lệnh nhập. Ở đây, câu lệnh nhập được tham chiếu để nhập lớp OrderedDict từ vùng chứa của bộ sưu tập. Tiếp theo, một biến được khai báo để tạo biến từ điển bằng cách tham khảo phương thức OrderedDict. Vì vậy, việc tạo tham chiếu này sẽ tạo kiểu dữ liệu OrderedDict hoạt động. Người dùng có thể chèn các mục mới vào từ điển đã sắp xếp và từ đó trở đi, từ điển sẽ duy trì thứ tự chèn. Điều quan trọng là biến từ điển được sử dụng ở đây sẽ hoạt động như một OrderedDict[]. Một điểm mấu chốt của lệnh ra lệnh là lệnh ra lệnh sẽ tiêu tốn một lượng lớn năng lượng trong phiên bản python 2. 7. Năng lượng này lớn hơn rất nhiều so với lượng năng lượng tiêu hao của một điển bình thường trong cùng 2. 7 phiên bản. Hơn nữa, sự khác biệt về bộ nhớ giữa lệnh được đặt hàng và lệnh bình thường xảy ra trong python 2. 7 vì danh sách triển khai được liên kết đôi để lưu trữ các giá trị theo một thứ tự cụ thể để duy trì thứ tự chèn. Vì vậy, việc sử dụng danh sách liên kết kép này làm cho việc tiêu thụ một lượng bộ nhớ lớn hơn. Thú vị hơn, chính các từ điển thông thường của python đảm bảo duy trì thứ tự chèn bắt đầu từ python 3. 7 phiên bản. Vì vậy, từ phiên bản python 3. 7, thay vì sử dụng lệnh chính tả có thứ tự để đảm bảo thứ tự chèn, từ điển thông thường sẽ tự đáp ứng nhu cầu này. Đây là một lợi thế lớn của từ điển trong python 3. 7 phiên bản

Hàm trong OrderedDict

Đưa ra dưới đây là các chức năng trong OrderedDict

1. popitem[last=True]

Phương thức mục pop được sử dụng để bật hoặc xóa cặp [khóa-giá trị] cụ thể. Vì vậy, mục pop chịu trách nhiệm xóa một mục khỏi từ điển. Vì vậy, khi cần xóa một mục cụ thể khỏi từ điển, thì có thể sử dụng Ordered dict. Phương thức mục pop có một đối số được gọi là cuối cùng; . Khi biến cuối cùng được gán là True thì pop sẽ hoạt động theo nguyên tắc vào sau ra trước [LIFO]. Ngược lại khi last=False thì thao tác bật lên sẽ hoạt động theo nguyên tắc FIFO. Vì vậy, theo FIFO, khi cửa sổ bật lên được gọi, mục Đầu tiên được chèn sẽ được bật ra dưới dạng mục Đầu tiên xuất hiện

2. move_to_end[key, last=True]

Phương thức di chuyển đến cuối được sử dụng để di chuyển một khóa cụ thể làm mục cuối cùng trong từ điển. Vì vậy, khi một phím cần được di chuyển đến đầu bên phải hoặc đầu bên trái, thì có thể sử dụng phương pháp di chuyển đến đầu cuối. Di chuyển đến cuối hoạt động theo cách mà khi last=true, thì phím được chỉ định sẽ được di chuyển đến đầu bên phải của từ điển. Trong khi khi last=false được đặt, khóa được nhắm mục tiêu đến đầu bên trái của từ điển. Vì vậy, đối số cuối cùng xác định xem khóa mới được chèn phải được đặt ở đầu bên trái hay đầu bên phải của từ điển. Các chức năng như thế này mang lại rất nhiều tính linh hoạt trong việc sắp xếp lại từ điển OrderedDict. Đây là một trong những lợi thế chính của việc sử dụng OrderedDict trên một từ điển thông thường. Vị trí các phím hiện có có thể linh hoạt di chuyển hoặc đặt trong mục từ điển ở vị trí cần thiết

Ví dụ về OrderedDict trong Python

Dưới đây là ví dụ về OrderedDict trong Python

Mã số

import itertools
next[itertools.islice[d.itervalues[], 0, 1]]  # "python"
next[itertools.islice[d.itervalues[], 1, 2]]  # "spam"
3

đầu ra

Giải trình

  • Trong ví dụ trên, hai từ điển được tạo. Đầu tiên, một từ điển python bình thường được tạo và các mục được chèn vào đó và hiển thị. Sau đó, từ điển theo thứ tự đã tạo được áp dụng lần đầu tiên khi di chuyển đến chức năng kết thúc. Vì vậy, việc di chuyển đến chức năng kết thúc này được áp dụng cho mục thứ ba làm cho mục thứ ba trở thành mục cuối cùng trong từ điển
  • Tiếp theo, phương pháp mục pop được áp dụng. Mục pop này xóa mục đầu tiên khỏi từ điển vì pop được áp dụng với đối số last=false. Ngoài ra, từ phiên bản python 3. 7, thay vì sử dụng OrderedDict để đảm bảo thứ tự chèn, từ điển thông thường sẽ tự đáp ứng nhu cầu này

Sự kết luận

Các bộ sưu tập như dict có thứ tự rất hữu ích trong việc triển khai hoạt động của bộ đệm LRU. Vì vậy, các loại bộ đệm LRU này hoạt động giống như các mục mong muốn sắp xếp các mục để duy trì thứ tự sắp xếp nằm trong số các lĩnh vực chính mà chức năng OrderedDict được ngụ ý rộng rãi. Kiểm tra bằng nhau giữa các đối tượng của OrderedDict và các đối tượng ánh xạ khác không nhạy cảm với thứ tự sắp xếp như từ điển thông thường. Đây là đặc điểm nhận dạng chính của từ điển có thứ tự với từ điển thông thường

Bài viết được đề xuất

Đây là hướng dẫn về OrderedDict trong Python. Ở đây chúng tôi thảo luận về phần giới thiệu, các chức năng trong OrderedDict và ví dụ tương ứng. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –

OrderedDict có nghĩa là gì trong Python?

OrderedDict của Python là một lớp con dict duy trì thứ tự trong đó các cặp khóa-giá trị, thường được gọi là mục, được chèn vào từ điển . Khi bạn lặp lại một đối tượng OrderedDict, các mục sẽ được duyệt theo thứ tự ban đầu. Nếu bạn cập nhật giá trị của khóa hiện có, thì thứ tự sẽ không thay đổi.

dict có được đặt hàng trong Python không?

Kể từ phiên bản Python 3. 7, từ điển được sắp xếp . Trong Trăn 3. 6 trở về trước, từ điển không có thứ tự. Khi chúng ta nói rằng từ điển được sắp xếp theo thứ tự, điều đó có nghĩa là các mục có thứ tự xác định và thứ tự đó sẽ không thay đổi.

Sự khác biệt giữa dict và OrderedDict là gì?

Sự khác biệt duy nhất giữa OrderedDict và dict là trong OrderedDict, nó duy trì thứ tự của các khóa khi được chèn. Trong chính tả, thứ tự có thể xảy ra hoặc không xảy ra . OrderedDict là một lớp thư viện tiêu chuẩn, nằm trong mô-đun bộ sưu tập.

Làm cách nào để lặp OrderedDict trong Python?

Các bước để thực hiện phép lặp thông qua Ordereddict trong python. .
Nhập lệnh từ bộ sưu tập trong python
Lấy đầu vào của ra lệnh
Lặp lại thông qua lệnh theo thứ tự theo một trong hai cách tiếp cận được đưa ra dưới đây

Chủ Đề