Hướng dẫn how do you compare two list tuples in python? - làm thế nào để bạn so sánh hai bộ danh sách trong python?

old = [['ver','1121'],['sign','89'],['address','A45'],['type','00']]
new = [['ver','1121'],['sign','89'],['type','01']]

Tôi cần so sánh danh sách

my_list = [[a,b] for [a,b] in new for [c,d] in old  if [[a==c] and [b==d]]]
print[ my_list]
0 với
my_list = [[a,b] for [a,b] in new for [c,d] in old  if [[a==c] and [b==d]]]
print[ my_list]
1 dựa trên phần tử đầu tiên của các bộ dữ

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]

Tôi có thể có được tất cả các bộ dữ liệu phù hợp với sự hiểu biết dưới đây nhưng không thể nghĩ ra ngoài nó.

my_list = [[a,b] for [a,b] in new for [c,d] in old  if [[a==c] and [b==d]]]
print[ my_list]

Xin vui lòng gợi ý cho tôi một cách để làm điều đó.

CHỈNH SỬA

Tôi xin lỗi vì không rõ ràng về câu hỏi của mình, tôi đã không đề cập đến một điều nữa, các khóa trong danh sách có thể lặp đi lặp lại, có nghĩa là danh sách có thể giống như:

old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','sorry']]

new = [['ver','1121'],['sign','89'],['type','01'],['ver','sorry]]

CẬP NHẬT

Nhờ @holdenweb, tôi đã thực hiện một số thay đổi đối với mã của anh ấy và điều này dường như đang cung cấp đầu ra mong đợi, xin vui lòng đề xuất nếu có bất kỳ sai sót nào.

old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','works?']]
new = [['ver','1121'],['sign','89'],['type','01'],['ver','This']]

formatter = "{:12}: {:8} = {}".format
newfmter = "{} [old : {}]".format

kv_old = []
for i,[kn, vn] in enumerate[new]:
    vo = [[j,[ko,vo]] for j,[ko, vo] in enumerate[old] if [ko==kn] ]
    for idx,[key,val] in vo:
        if idx >=i:
            kv_old = [key,val]
            break;

    if kv_old[1]==vn:
        print[formatter["Match", kv_old[0], kv_old[1]]]
    else:
        print[formatter["Mismatch", kn, newfmter[vn, kv_old[1]]]]

Làm thế nào để so sánh tuple hoạt động trong Python?

Giới thiệu nhanh về Tuples

Python bao gồm 4 loại dữ liệu tích hợp được sử dụng để lưu trữ các bộ sưu tập dữ liệu. Những loại dữ liệu này là:

  • Danh sách
  • Bộ
  • Từ điển
  • Tuple

Một tuple cho phép bạn lưu trữ nhiều mục trong một biến duy nhất. Do đó, nó là một bộ sưu tập được đặt hàng và không thể thay đổi/bất biến. Ngoài ra, các bộ dữ liệu không đồng nhất vì chúng cho phép bạn lưu trữ các yếu tố thuộc các loại khác nhau.ordered and unchangeable/immutable. Also, tuples are heterogeneous as they allow you to store elements that are of different types.

Syntax:

my_tuple = [1, 2, 3, 'Python']

Example:

my_tuple = ["Python", "Java", 200]
print[my_tuple]

# OUTPUT : ['Python', 'Java', 200]

Để biết thêm chi tiết về Tuples in Python, xin vui lòng xem hướng dẫn blog của chúng tôi ở đây. Mục đích của bài viết này là để thảo luận về cách so sánh hoạt động giữa hai bộ dữ liệu. blog tutorial here. The purpose of this article is to discuss how the comparison works between two tuples.

Xây dựng vấn đề

Đưa ra hai bộ dữ liệu; Làm thế nào để so sánh giữa hai bộ dữ liệu hoạt động?

Example:

[4, 5] < [3, 5] # Equals false

Vì vậy, như được mô tả trong ví dụ trên - làm thế nào/tại sao đầu ra là sai? Hoặc làm thế nào để Python so sánh hai bộ dữ liệu này?

? So sánh bộ dữ

? Quy tắc của ngón tay cái để so sánh các bộ dữ liệu Python: The Rule of Thumb for comparing Python Tuples:

Tuples in Python are compared lexicographically. This means that the corresponding elements of the given tuples are compared to each other.

Do đó, các bộ dữ liệu trong Python được so sánh trên cơ sở vị trí của chúng: mục đầu tiên của tuple đầu tiên được so sánh với mục đầu tiên của bộ thứ hai. Nếu chúng không bằng nhau thì so sánh đầu tiên là đủ để suy ra đầu ra. Nếu không, các mục thứ hai được xem xét, sau đó thứ ba và cứ thế cho đến khi tất cả các yếu tố tương ứng của cả hai bộ dữ liệu đã được so sánh.

Chúng ta hãy xem xét những gì tài liệu Python nói về so sánh giá trị của các chuỗi tích hợp như danh sách và bộ dữ liệu: Python documentation talks about Value Comparison of built-in sequences like lists and tuples:

  • Đối với hai bộ sưu tập là người khác nhau:equal”:
    • Chúng phải cùng loại, [ví dụ: & nbsp; ________ 23 & nbsp; là
      my_list = [[a,b] for [a,b] in new for [c,d] in old  if [[a==c] and [b==d]]]
      print[ my_list]
      
      4 vì loại không giống nhau]. same type, [for example, 
      my_list = [[a,b] for [a,b] in new for [c,d] in old  if [[a==c] and [b==d]]]
      print[ my_list]
      
      3 is
      my_list = [[a,b] for [a,b] in new for [c,d] in old  if [[a==c] and [b==d]]]
      print[ my_list]
      
      4 because the type is not the same].
    • Họ phải có cùng chiều dài, vàhave the same length, and
    • Mỗi cặp phần tử tương ứng trong các chuỗi đã cho phải bằng nhau.in the given sequences must be equal.
  • Các bộ sưu tập hỗ trợ so sánh đơn hàng và các bộ sưu tập hỗ trợ so sánh thứ tự được đặt hàng giống như các yếu tố không đồng đều/khác nhau đầu tiên của chúng.
    • Ví dụ: & nbsp; ________ 25 & nbsp; giống như & nbsp; ________ 26]. Trong trường hợp một phần tử tương ứng không tồn tại, thì bộ sưu tập ngắn hơn được đặt hàng đầu tiên và được coi là nhỏ hơn. [ví dụ: & nbsp; ________ 27 & nbsp; là
      my_list = [[a,b] for [a,b] in new for [c,d] in old  if [[a==c] and [b==d]]]
      print[ my_list]
      
      8].

⚠ & nbsp; sự chú ý Attention

  • Bạn không nên coi bộ dữ liệu là vectơ trong không gian N chiều, so với chiều dài của chúng.
  • Để so sánh, ________ 29 & nbsp; và & nbsp; Thay vào đó, họ đại diện cho người Viking là trước khi và người khác là sau. Vì vậy, trong ví dụ của chúng tôi ở trên [4, 5] không phải là trước [3, 5]. Do đó, đầu ra là
    old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','sorry']]
    
    new = [['ver','1121'],['sign','89'],['type','01'],['ver','sorry]]
    
    1.smaller than” and “greater than“; rather they represent “is before” and “is after“. So in our example above [4, 5] is not before [3, 5]. Hence, the output is
    old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','sorry']]
    
    new = [['ver','1121'],['sign','89'],['type','01'],['ver','sorry]]
    
    1.

Bây giờ chúng ta hãy xem xét một vài kịch bản sẽ làm rõ hơn về khái niệm của chúng ta.

So sánh bình thường

Chúng ta hãy xem đoạn trích sau đây so sánh hai bộ dữ liệu trong nhiều tình huống:

# comparing integers
print[[10, 20] < [10, 25]]
print[[10, 20] == [10, 25]]
print[[10, 20] > [10, 25]]
# comparing strings
print[['x', 'y'] < ['x', 'z']]
# comparing list of tuples
print[[[4, 5], [5, 6]] == [[4, 5], [5, 6]]]

Output:

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
0

Explanation:-

  • Mặc dù so sánh
    old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','sorry']]
    
    new = [['ver','1121'],['sign','89'],['type','01'],['ver','sorry]]
    
    2 và
    old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','sorry']]
    
    new = [['ver','1121'],['sign','89'],['type','01'],['ver','sorry]]
    
    3, người ta thấy rằng phần tử đầu tiên trong cả hai bộ dữ liệu đều bằng nhau, do đó các phần tử tiếp theo được so sánh và rõ ràng là
    old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','sorry']]
    
    new = [['ver','1121'],['sign','89'],['type','01'],['ver','sorry]]
    
    4. Điều này có nghĩa là
    old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','sorry']]
    
    new = [['ver','1121'],['sign','89'],['type','01'],['ver','sorry]]
    
    5.
  • .
  • Tương tự, trong kịch bản thứ ba, khá rõ ràng là khi chúng ta so sánh hai bộ dữ liệu chứa danh sách tương tự, đầu ra là
    my_list = [[a,b] for [a,b] in new for [c,d] in old  if [[a==c] and [b==d]]]
    print[ my_list]
    
    8.

➧Comparing không đồng đều bộ dữ liệu

Hãy xem xét rằng bạn có một vài bộ dữ liệu với độ dài khác nhau. Chúng ta hãy xem cách so sánh này hoạt động trong đoạn trích sau:

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
1

Output:

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
2

➧Comparing Tuples với các mặt hàng không đồng nhất

Trong khi so sánh hai bộ dữ liệu có các mục không đồng nhất, nghĩa là, các chức năng của toán tử ____39 bình thường; Tuy nhiên, các nhà khai thác

old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','works?']]
new = [['ver','1121'],['sign','89'],['type','01'],['ver','This']]

formatter = "{:12}: {:8} = {}".format
newfmter = "{} [old : {}]".format

kv_old = []
for i,[kn, vn] in enumerate[new]:
    vo = [[j,[ko,vo]] for j,[ko, vo] in enumerate[old] if [ko==kn] ]
    for idx,[key,val] in vo:
        if idx >=i:
            kv_old = [key,val]
            break;

    if kv_old[1]==vn:
        print[formatter["Match", kv_old[0], kv_old[1]]]
    else:
        print[formatter["Mismatch", kn, newfmter[vn, kv_old[1]]]]
0 và
old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','works?']]
new = [['ver','1121'],['sign','89'],['type','01'],['ver','This']]

formatter = "{:12}: {:8} = {}".format
newfmter = "{} [old : {}]".format

kv_old = []
for i,[kn, vn] in enumerate[new]:
    vo = [[j,[ko,vo]] for j,[ko, vo] in enumerate[old] if [ko==kn] ]
    for idx,[key,val] in vo:
        if idx >=i:
            kv_old = [key,val]
            break;

    if kv_old[1]==vn:
        print[formatter["Match", kv_old[0], kv_old[1]]]
    else:
        print[formatter["Mismatch", kn, newfmter[vn, kv_old[1]]]]
1 không hoạt động với các loại dữ liệu không đồng nhất.

Example:

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
3

Do đó, để đánh giá lớn hơn và ít hơn các toán tử để so sánh các mục không đồng nhất của hai bộ dữ liệu, bạn phải sử dụng hàm

old = [['ver','1121'],['sign','89'],['address','A45'],['type','00'],['ver','works?']]
new = [['ver','1121'],['sign','89'],['type','01'],['ver','This']]

formatter = "{:12}: {:8} = {}".format
newfmter = "{} [old : {}]".format

kv_old = []
for i,[kn, vn] in enumerate[new]:
    vo = [[j,[ko,vo]] for j,[ko, vo] in enumerate[old] if [ko==kn] ]
    for idx,[key,val] in vo:
        if idx >=i:
            kv_old = [key,val]
            break;

    if kv_old[1]==vn:
        print[formatter["Match", kv_old[0], kv_old[1]]]
    else:
        print[formatter["Mismatch", kn, newfmter[vn, kv_old[1]]]]
2 để chuyển đổi các giá trị trong cả hai bộ dữ liệu thành một loại. Bạn có thể đọc về hàm bản đồ [] trong hướng dẫn này. map[] function in this tutorial.

Example:

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
4

Output:

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
5

? Phần thưởng: Phương pháp so sánh hai bộ dữ liệu trong Python

Phương pháp 1: Sử dụng tất cả [] và zip []

  • Python sườn & nbsp; tích hợp & nbsp; ____ 43 & nbsp; hàm lấy một người có thể sử dụng được là một đối số & nbsp; ____ 44 & nbsp; chẳng hạn như một danh sách, tuple hoặc từ điển. Nó trả về & nbsp; ____ 45 & nbsp; nếu tất cả các yếu tố có thể đánh giá thành & nbsp; ____ 45 & nbsp; sử dụng chuyển đổi boolean ngầm, nếu không, nó sẽ trả về & nbsp; ________ 31. Nếu có thể trống, & nbsp; ____ 48 & nbsp; returns & nbsp; ____ 45 & nbsp; vì điều kiện được thỏa mãn & nbsp; cho tất cả các yếu tố.
  • Chức năng & nbsp; ____ ____ 50 & nbsp; lấy một số lượng tùy ý & nbsp; iterables & nbsp; và tổng hợp chúng cho một đối tượng có thể lặp lại, một đối tượng zip. Nó kết hợp các giá trị & nbsp; i-th & nbsp; của mỗi đối số có thể lặp lại thành một tuple. Do đó, nếu bạn vượt qua hai lần lặp, mỗi tuple sẽ chứa hai giá trị. Nếu bạn vượt qua ba lần lặp, mỗi tuple sẽ chứa ba giá trị. Ví dụ: zip cùng nhau danh sách & nbsp; ________ 51 & nbsp; và & nbsp; ________ 52 & nbsp; to & nbsp; ________ 53.

Example:

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
6

Output:

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
7

Phương pháp 2: Sử dụng tất cả [] và bản đồ [] với hàm Lambda

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
8

Output:

Match     : ver   =   1121
Match     : sign  =   89
Mismatch  : type  =   01 [old : 00]
7

Sự kết luận

Tôi hy vọng bài viết này đã giúp bạn hiểu được so sánh Tuple trong Python. Vui lòng đăng ký và theo dõi các khái niệm và thảo luận thú vị hơn.subscribe and stay tuned for more interesting concepts and discussions.

Tôi là một blogger Python chuyên nghiệp và người tạo nội dung. Tôi đã xuất bản nhiều bài báo và tạo ra các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc như một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Mạng.

Bạn có thể liên lạc với tôi @:

Upwork LinkedIn
LinkedIn

Làm thế nào để bạn so sánh hai bộ dữ liệu trong Python?

Tuples được so sánh vị trí theo vị trí: mục đầu tiên của bộ thứ nhất được so sánh với mục đầu tiên của bộ thứ hai;Nếu chúng không bằng nhau, đây là kết quả của việc so sánh, nếu không mục thứ hai được xem xét, sau đó là thứ ba và vân vân.the first item of the first tuple is compared to the first item of the second tuple; if they are not equal, this is the result of the comparison, else the second item is considered, then the third and so on.

Làm thế nào để bạn so sánh danh sách và bộ dữ liệu?

Danh sách vs tuple.

Chúng ta có thể so sánh 2 bộ dữ liệu không?

Các toán tử so sánh có thể được sử dụng với các bộ dữ liệu và các chuỗi khác.Python bắt đầu bằng cách so sánh phần tử đầu tiên từ mỗi chuỗi.Nếu chúng bằng nhau, nó sẽ so sánh yếu tố tiếp theo của mỗi, v.v., cho đến khi nó tìm thấy các yếu tố khác nhau.. Python starts by comparing the first element from each sequence. If they are equal, it compares the next element of each, and so on, until it finds elements that differ.

Làm thế nào để bạn kiểm tra xem hai bộ dữ liệu có bằng nhau trong Python không?

Khoa học dữ liệu thực tế bằng cách sử dụng Python khi cần kiểm tra xem hai danh sách các bộ dữ liệu có giống hệt nhau không, toán tử '==' được sử dụng.Toán tử '==' kiểm tra xem hai lần lặp có bằng nhau hay không.the '==' operator is used. The '==' operator checks to see if two iterables are equal or not.

Bài Viết Liên Quan

Chủ Đề