Bạn có thể đảo ngược các khóa và giá trị trong từ điển Python không?

Bạn có thể hoán đổi khóa và giá trị trong từ điển với khả năng hiểu từ điển và phương thức

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
2

  • Tạo một từ điển trong Python ({}, dict(), dict combs)
  • Lặp lại từ điển (khóa và giá trị) với vòng lặp for trong Python

d = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}

d_swap = {v: k for k, v in d.items()}
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}

nguồn. dict_swap_key_value. py

Hàm số

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}

nguồn. dict_swap_key_value. py

Lưu ý về các giá trị chung

Tất cả các khóa trong từ điển phải khác nhau, nhưng các giá trị có thể giống nhau

Khi các khóa và giá trị của từ điển có giá trị chung được hoán đổi, chỉ một giá trị chung còn lại làm khóa

Đôi khi, trong khi làm việc với từ điển, chúng ta có thể gặp sự cố cần đảo ngược thứ tự từ điển. Đây là một vấn đề khá phổ biến và có thể có ứng dụng trong nhiều lĩnh vực bao gồm lập trình hàng ngày và phát triển web. Hãy thảo luận về một số cách mà vấn đề này có thể được giải quyết

Phương pháp #1. Sử dụng

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
3
Phương pháp này dành cho các phiên bản Python cũ hơn. Các phiên bản cũ không giữ thứ tự trong từ điển, do đó phải chuyển đổi sang OrderedDict để thực hiện tác vụ này.




dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
4

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
5

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
6

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
7
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
8____49
dct = {
  "Animal": "Dog",
  "Fruit": "Pear",
  "Vegetable": "Cabbage",
  "Tree": "Maple",
  "Flower": "Daisy"
}

print(dct.items())
0

dct = {
  "Animal": "Dog",
  "Fruit": "Pear",
  "Vegetable": "Cabbage",
  "Tree": "Maple",
  "Flower": "Daisy"
}

print(dct.items())
1

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
30

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
31
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
32
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
33
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
34
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
35
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
36
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
37
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
38
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
35
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
40
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
37
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
42
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
35_______444
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
45

Đảo ngược từ điển khác với đảo ngược danh sách, nó có nghĩa là đảo ngược hoặc chuyển đổi các thành phần khóa và giá trị của từ điển, về cơ bản là hoán đổi chúng cho bất kỳ mục đích nào mà nhà phát triển có thể sử dụng cho

Sử dụng dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')]) 3 để đảo ngược một từ điển trong Python

Từ điển Python có một hàm tích hợp có tên là

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
3 trả về một đối tượng có thể lặp lại sẽ hiển thị các cặp khóa-giá trị của từ điển ở dạng một bộ

Ví dụ: khai báo một từ điển gồm các danh mục ngẫu nhiên và in nó ra bằng cách sử dụng

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
3

dct = {
  "Animal": "Dog",
  "Fruit": "Pear",
  "Vegetable": "Cabbage",
  "Tree": "Maple",
  "Flower": "Daisy"
}

print(dct.items())

đầu ra

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])

In một từ điển bằng cách sử dụng

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
3 sẽ xuất ra một danh sách các giá trị bộ lặp có thể lặp lại mà chúng ta có thể thao tác bằng cách sử dụng vòng lặp
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
7 cho từ điển

Đảo ngược các cặp khóa-giá trị bằng cách lặp lại kết quả của

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
3 và chuyển đổi khóa và giá trị

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
0

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
9 và
def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
00 trong vòng lặp
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
7 lần lượt là key và value.
def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
02 là phần giữ chỗ cho khóa và giá trị trong mỗi lần lặp lại, mặc dù chúng tôi đặt giá trị trước đó
def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
00 làm khóa mới và khóa trước đó
dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
9 làm giá trị mới

đầu ra

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
7

Các phần tử khóa và giá trị hiện được đảo ngược trong đầu ra

Các khóa có giá trị giống nhau trong từ điển đảo ngược

Một tình huống ví dụ khác khi đảo ngược từ điển là nếu có nhiều khóa hoặc giá trị có cùng giá trị. Đây là một kịch bản có nhiều khả năng đảo ngược từ điển

Ví dụ: từ điển về những con vật yêu thích của mọi người

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
8

Nếu từ điển được đảo ngược bằng mã trên, đầu ra sẽ không như bạn mong đợi

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
9

đầu ra

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
0

Ở đây, thiếu 2 thành phần trong từ điển gốc vì mỗi khi một khóa hoặc một giá trị lặp lại trong vòng lặp, bản ghi hiện có sẽ bị ghi đè

Từ điển chứa 3 người có cặp giá trị

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
05 nhưng chỉ có
def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
06 được sao chép vì đây là bản ghi cuối cùng có giá trị
def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
05 và đã ghi đè lên 2 mục từ điển khác

Để giải quyết vấn đề này, chúng tôi sẽ phải lưu trữ các giá trị trong một danh sách để chúng được gán cho một khóa duy nhất

Mã ví dụ hoàn chỉnh

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
4

Sử dụng def get_swap_dict(d): return {v: k for k, v in d.items()} d_swap = get_swap_dict(d) print(d_swap) # {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'} 08 để đảo ngược một từ điển trong Python

Mô-đun

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
09 có chức năng
def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
70 có thể thao tác các giá trị trong từ điển bằng Python

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
70 chủ yếu được sử dụng để tạo các giá trị mặc định của các khóa không tồn tại. Nếu bạn truy cập một khóa không tồn tại, nó có thể khai báo một giá trị mặc định cho nó, ngay cả khi nó không tồn tại

Hàm này hữu ích cho trường hợp của chúng tôi vì chúng tôi muốn khởi tạo một từ điển mới với các giá trị thuộc kiểu dữ liệu danh sách

Sử dụng cùng một ví dụ

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
72, đảo ngược từ điển và chuyển đổi các giá trị thành danh sách

Đầu tiên, khởi tạo từ điển mới bằng cách sử dụng

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
70

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
1

Tiếp theo, sử dụng khả năng hiểu danh sách để đảo ngược và lưu trữ các giá trị đảo ngược vào từ điển mới

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
2

Cuối cùng, vì

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
70 tạo ra một loại lớp con của từ điển, hãy chuyển đổi lại nó thành loại từ điển cơ sở bằng cách gói nó trong
def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
75

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
0

đầu ra

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
1

John, Jenny và James hiện nằm trong cùng một danh sách với khóa

def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
05 thay vì các phần tử khác bị ghi đè bởi phần tử cuối cùng có giá trị
def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
05

Mã ví dụ hoàn chỉnh

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
2

Tóm lại, sử dụng

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])
3 để lặp qua từ điển và đảo ngược các khóa và giá trị. Nếu trong bất kỳ trường hợp nào, tập dữ liệu của bạn có khả năng trùng lặp, thì hãy đảm bảo chuyển đổi các giá trị thành danh sách bằng cách sử dụng
def get_swap_dict(d):
    return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d)
print(d_swap)
# {'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}
70 và thao tác nó theo cách mà các giá trị của từ điển sẽ thêm vào danh sách thay vì thay thế các giá trị hiện có

Có thể đảo ngược từ điển trong Python không?

1) Sử dụng phương thức OrderedDict() và items() .

Có thể thay đổi giá trị khóa từ điển không?

Vì khóa là thứ mà từ điển sử dụng để tra cứu giá trị nên bạn thực sự không thể thay đổi chúng . Điều gần nhất bạn có thể làm là lưu giá trị được liên kết với khóa cũ, xóa nó, sau đó thêm mục nhập mới bằng khóa thay thế và giá trị đã lưu.

Khóa và giá trị có thể giống nhau trong từ điển Python không?

Trả lời. Không, mỗi khóa trong từ điển phải là duy nhất . Bạn không thể có hai khóa có cùng giá trị. Cố gắng sử dụng lại cùng một khóa sẽ chỉ ghi đè lên giá trị được lưu trữ trước đó.

Phương pháp nào được sử dụng để truy xuất các cặp khóa và giá trị trong từ điển?

Sử dụng phương thức items() , chúng ta có thể lấy danh sách các bộ có cặp khóa-giá trị trong từ điển.