Hướng dẫn use dictionary as key python - sử dụng từ điển làm khóa python

Tên lớp ... ok:/

Giải pháp của tôi là tạo một lớp, với các tính năng Dict, nhưng được triển khai như một danh sách với các đối tượng {key, value}. Khóa và giá trị có thể là bất cứ điều gì sau đó.dict features, but implemented as a list with {key, value} objects. key and value can be anything then.

class DictKeyDictException(Exception):
    pass


class DictKeyDict():

    def __init__(self, *args):
        values = [self.__create_element(key, value) for key, value in args]
        self.__values__ = values

    def __setitem__(self, key, value):
        self.set(key, value)

    def __getitem__(self, key):
        return self.get(key)

    def __len__(self):
        return len(self.__values__)

    def __delitem__(self, key):
        keys = self.keys()

        if key in keys:
            index = keys.index(key)
            del self.__values__[index]

    def clear(self):
        self.__values__ = []

    def copy(self):
        return self.__values__.copy()

    def has_key(self, k):
        return k in self.keys()

    def update(self, *args, **kwargs):
        if kwargs:
            raise DictKeyDictException(f"no kwargs allowed in '{self.__class__.__name__}.update' method")
        for key, value in args:
            self[key] = value

        return self.__values__

    def __repr__(self) -> list:
        return repr(self.__values__)

    @classmethod
    def __create_element(cls, key, value):
        return {"key": key, "value": value}

    def set(self, key, value) -> None:
        keys = self.keys()

        if key in keys:
            index = keys.index(key)
            self.__values__[index] = self.__create_element(key, value)
        else:
            self.__values__.append(self.__create_element(key, value))

        return self.__values__

    def keys(self):
        return [dict_key_value["key"] for dict_key_value in self.__values__]

    def values(self):
        return [value["value"] for value in self.__values__]

    def items(self):
        return [(dict_key_value["key"], dict_key_value["value"]) for dict_key_value in self.__values__]

    def pop(self, key, default=None):
        keys = self.keys()

        if key in keys:
            index = keys.index(key)
            value = self.__values__.pop(index)["value"]
        else:
            value = default

        return value

    def get(self, key, default=None):
        keys = self.keys()

        if key in keys:
            index = keys.index(key)
            value = self.__values__[index]["value"]
        else:
            value = default

        return value

    def __iter__(self):
        return iter(self.keys())

và cách sử dụng:

dad = {"name": "dad"}
mom = {"name": "mom"}
boy = {"name": "son"}
girl = {"name": "daughter"}

# set
family = DictKeyDict()
family[dad] = {"age": 44}
family[mom] = {"age": 43}
# or
family.set(dad, {"age": 44, "children": [boy, girl]})
# or
family = DictKeyDict(
    (dad, {"age": 44, "children": [boy, girl]}),
    (mom, {"age": 43, "children": [boy, girl]}),
)

# update
family.update((mom, {"age": 33}))  # oups sorry miss /!\ loose my children

family.set({"pet": "cutty"}, "cat")
del family[{"pet": "cutty"}]  # cutty left...

family.set({"pet": "buddy"}, "dog")
family[{"pet": "buddy"}] = "wolf"  # buddy was not a dog

print(family.keys())
print(family.values())
for k, v in family.items():
    print(k, v)

Hầu như bất kỳ loại giá trị nào cũng có thể được sử dụng làm khóa từ điển trong Python. Bạn thậm chí có thể sử dụng các đối tượng tích hợp như các loại và chức năng. Tuy nhiên, có một vài hạn chế rằng các khóa từ điển phải tuân thủ.

Đầu tiên, một khóa nhất định chỉ có thể xuất hiện trong một từ điển một lần. Các khóa trùng lặp không được phép. Một từ điển ánh xạ từng khóa theo giá trị tương ứng, do đó, nó không có ý nghĩa gì khi ánh xạ một khóa cụ thể hơn một lần. Nếu bạn chỉ định khóa lần thứ hai trong quá trình tạo từ điển ban đầu, thì lần xuất hiện thứ hai sẽ ghi đè lên thứ nhất.

Thứ hai, một khóa từ điển phải thuộc loại bất biến. Ví dụ: bạn có thể sử dụng số nguyên, phao, chuỗi hoặc boolean làm khóa từ điển. Tuy nhiên, cả danh sách và từ điển khác đều không thể đóng vai trò là khóa từ điển, bởi vì danh sách và từ điển đều có thể thay đổi. Mặt khác, các giá trị có thể là bất kỳ loại nào và có thể được sử dụng nhiều lần.


Phương pháp 5: Các khóa từ điển để liệt kê bằng cách sử dụng giải nén với *.
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}


Phương pháp 6: Khóa từ điển để liệt kê bằng cách sử dụng ItemGetter ..

Làm cách nào để trích xuất một khóa từ điển trong Python?

Phương pháp 1: Sử dụng danh sách. Bước 1: Chuyển đổi các khóa và giá trị từ điển thành danh sách. Bước 2: Tìm chỉ mục phù hợp từ danh sách giá trị. Bước 3: Sử dụng chỉ mục để tìm khóa thích hợp từ danh sách khóa.

thisdict = {& nbsp; & nbsp; "thương hiệu": "ford", & nbsp; & nbsp; "model": "mustang", & nbsp; & nbsp; "năm": 1964}

Từ điển

Thí dụ

Từ điển được sử dụng để lưu trữ các giá trị dữ liệu trong khóa: các cặp giá trị.

Từ điển là một bộ sưu tập được đặt hàng*, có thể thay đổi và không cho phép trùng lặp.
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
print(thisdict)

Hãy tự mình thử »


Từ quan điểm của Python, các từ điển được định nghĩa là đối tượng có kiểu dữ liệu 'dict':

Các giá trị trong các mục từ điển có thể thuộc bất kỳ loại dữ liệu nào:

In kiểu dữ liệu của từ điển:

Thí dụ

thisdict = {& nbsp; & nbsp; "thương hiệu": "ford", & nbsp; & nbsp; "model": "mustang", & nbsp; & nbsp; "năm": 1964} in (loại (thisdict))

Bộ sưu tập Python (mảng)
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
print(thisdict["brand"])

Hãy tự mình thử »


Có bốn loại dữ liệu thu thập trong ngôn ngữ lập trình Python:

thisdict = {& nbsp; & nbsp; "thương hiệu": "ford", & nbsp; & nbsp; "model": "mustang", & nbsp; & nbsp; "năm": 1964}

Từ điển

Từ điển được sử dụng để lưu trữ các giá trị dữ liệu trong khóa: các cặp giá trị.


Từ điển là một bộ sưu tập được đặt hàng*, có thể thay đổi và không cho phép trùng lặp.

Kể từ phiên bản Python 3.7, từ điển được đặt hàng. Trong Python 3.6 và trước đó, từ điển không được đặt hàng.


Từ điển được viết bằng dấu ngoặc xoăn, và có các khóa và giá trị:

Tạo và in một từ điển:

Thí dụ

thisdict = {& nbsp; & nbsp; "thương hiệu": "ford", & nbsp; & nbsp; "model": "mustang", & nbsp; & nbsp; "năm": 1964} in (thisdict)

Các mặt hàng từ điển
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964,
  "year": 2020
}
print(thisdict)

Hãy tự mình thử »



Các mục từ điển được đặt hàng, thay đổi và không cho phép trùng lặp.

Các mục từ điển được trình bày trong khóa: các cặp giá trị và có thể được đề cập bằng cách sử dụng tên khóa.

Thí dụ

In giá trị "thương hiệu" của từ điển:

this

Hãy tự mình thử »


Đặt hàng hoặc không được đặt hàng?

Các giá trị trong các mục từ điển có thể thuộc bất kỳ loại dữ liệu nào:

Thí dụ

Chuỗi, int, boolean và danh sách các loại dữ liệu:

Thisdict = {& nbsp; & nbsp; "thương hiệu": "ford", & nbsp; "Màu sắc": ["màu đỏ", "trắng", "màu xanh"]}
  "brand": "Ford",
  "electric": False,
  "year": 1964,
  "colors": ["red", "white", "blue"]
}

Hãy tự mình thử »


type()

Từ quan điểm của Python, các từ điển được định nghĩa là đối tượng có kiểu dữ liệu 'dict':

Các giá trị trong các mục từ điển có thể thuộc bất kỳ loại dữ liệu nào:

Thí dụ

In kiểu dữ liệu của từ điển:

thisdict = {& nbsp; & nbsp; "thương hiệu": "ford", & nbsp; & nbsp; "model": "mustang", & nbsp; & nbsp; "năm": 1964} in (loại (thisdict))
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
print(type(thisdict))

Hãy tự mình thử »


Bộ sưu tập Python (mảng)

Có bốn loại dữ liệu thu thập trong ngôn ngữ lập trình Python:

  • Danh sách là một bộ sưu tập được đặt hàng và thay đổi. Cho phép các thành viên trùng lặp. is a collection which is ordered and changeable. Allows duplicate members.
  • Tuple là một bộ sưu tập được đặt hàng và không thể thay đổi. Cho phép các thành viên trùng lặp. is a collection which is ordered and unchangeable. Allows duplicate members.
  • Set là một bộ sưu tập không được đặt hàng, không thể thay đổi*và không được giới thiệu. Không có thành viên trùng lặp. is a collection which is unordered, unchangeable*, and unindexed. No duplicate members.
  • Từ điển là một bộ sưu tập được đặt hàng ** và có thể thay đổi. Không có thành viên trùng lặp. is a collection which is ordered** and changeable. No duplicate members.

*Đặt các mục không thể thay đổi, nhưng bạn có thể xóa và/hoặc thêm các mục bất cứ khi nào bạn muốn.

** Kể từ phiên bản Python 3.7, từ điển được đặt hàng. Trong Python 3.6 và trước đó, từ điển không được đặt hàng.

Khi chọn một loại bộ sưu tập, rất hữu ích khi hiểu các thuộc tính của loại đó. Chọn đúng loại cho một tập dữ liệu cụ thể có thể có nghĩa là duy trì ý nghĩa, và, nó có thể có nghĩa là sự gia tăng hiệu quả hoặc bảo mật.



Tôi có thể sử dụng từ điển làm chìa khóa trong Python không?

Một từ điển hoặc một danh sách không thể là một chìa khóa.Mặt khác, các giá trị có thể là bất cứ điều gì và chúng có thể được sử dụng nhiều lần.. Values, on the other hand, can literally be anything and they can be used more than once.

Tôi có thể lấy chìa khóa từ một từ điển từ giá trị python không?

Chúng ta cũng có thể tìm nạp phím từ một giá trị bằng cách khớp tất cả các giá trị bằng dict.item () và sau đó in khóa tương ứng với giá trị đã cho.matching all the values using the dict.item() and then print the corresponding key to the given value.

Làm thế nào để bạn có được một chìa khóa từ một từ điển?

Phương pháp 1: Nhận các khóa từ điển làm danh sách bằng Dict.Chìa khóa ().
Phương pháp 2: Nhận các khóa từ điển làm danh sách bằng Dict.Chìa khóa ().
Phương pháp 3: Nhận các phím từ điển làm danh sách sử dụng cho phương thức Loop và nối thêm ..
Phương pháp 5: Các khóa từ điển để liệt kê bằng cách sử dụng giải nén với *.
Phương pháp 6: Khóa từ điển để liệt kê bằng cách sử dụng ItemGetter ..

Làm cách nào để trích xuất một khóa từ điển trong Python?

Phương pháp 1: Sử dụng danh sách.Bước 1: Chuyển đổi các khóa và giá trị từ điển thành danh sách.Bước 2: Tìm chỉ mục phù hợp từ danh sách giá trị.Bước 3: Sử dụng chỉ mục để tìm khóa thích hợp từ danh sách khóa.Step 1: Convert dictionary keys and values into lists. Step 2: Find the matching index from value list. Step 3: Use the index to find the appropriate key from key list.