Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

ChainMap trong Python

ChainMap được dùng để gom các dictionary (từ điển) thành một đơn vị duy nhất.

ChainMap là một lớp thư viện chuẩn, nằm trong module collections.

Để sử dụng, trước tiên cần nhập module collections:

import collections

Phần này sẽ trình bày một số hàm của lớp ChainMap.

Thuộc tính maps và phương thức keys(), values()

Thuộc tính maps dùng để hiển thị tất cả các cặp khóa-giá trị của tất cả các dictionary từ ChainMap. Phương thức keys() trả về các khóa từ ChainMap, và values() trả về tất cả giá trị của các khóa khác nhau từ ChainMap.

Mã ví dụ

import collections as col

con_code1 = {'India' : 'IN', 'China' : 'CN'}
con_code2 = {'France' : 'FR', 'United Kingdom' : 'GB'}

chain = col.ChainMap(con_code1, con_code2)
print("Chain ban đầu: " + str(chain.maps))
print('Các khóa trong ChainMap: ' + str(list(chain.keys())))
print('Các giá trị trong ChainMap: ' + str(list(chain.values())))

Kết quả

Chain ban đầu: [{'India': 'IN', 'China': 'CN'}, {'France': 'FR', 'United Kingdom': 'GB'}]
Các khóa trong ChainMap: ['China', 'United Kingdom', 'India', 'France']
Các giá trị trong ChainMap: ['CN', 'GB', 'IN', 'FR']

Phương thức new_child() và reversed

Phương thức new_child() dùng để thêm một đối tượng dictionary khác vào ChainMap ở vị trí đầu tiên. Và phương thức reversed cũng có thể dùng trên ChainMap để đảo ngược thứ tự các cặp khóa-giá trị.

Mã ví dụ

import collections as col

con_code1 = {'India' : 'IN', 'China' : 'CN'}
con_code2 = {'France' : 'FR', 'United Kingdom' : 'GB'}
code = {'Japan' : 'JP'}

chain = col.ChainMap(con_code1, con_code2)
print("Chain ban đầu: " + str(chain.maps))

chain = chain.new_child(code)  # Chèn New Child
print("Chain sau khi chèn New Child: " + str(chain.maps))

chain.maps = reversed(chain.maps)
print("Chain đảo ngược: " + str(chain))

Kết quả

Chain ban đầu: [{'India': 'IN', 'China': 'CN'}, {'France': 'FR', 'United Kingdom': 'GB'}]
Chain sau khi chèn New Child: [{'Japan': 'JP'}, {'India': 'IN', 'China': 'CN'}, {'France': 'FR', 'United Kingdom': 'GB'}]
Chain đảo ngược: ChainMap({'France': 'FR', 'United Kingdom': 'GB'}, {'India': 'IN', 'China': 'CN'}, {'Japan': 'JP'})