在 Python 中,如何创建一个自定义字典类?

一、自定义字典类

在 Python 中,你可以通过自定义类来创建具有特定功能的字典。以下是一个简单的示例,展示了如何创建一个自定义字典类:

class CustomDict(dict):
    def __init__(self):
        self.data = {}  # 用于存储字典数据的属性

    def __getitem__(self, key):
        return self.data[key]  # 重写获取元素的方法

    def __setitem__(self, key, value):
        self.data[key] = value  # 重写设置元素的方法

    def __delitem__(self, key):
        del self.data[key]  # 重写删除元素的方法

    def __contains__(self, key):
        return key in self.data  # 重写检查元素是否存在的方法

    def keys(self):
        return list(self.data.keys())  # 添加获取所有键的方法

    def values(self):
        return list(self.data.values())  # 添加获取所有值的方法

    def items(self):
        return list(self.data.items())  # 添加获取所有键值对的方法

    def clear(self):
        self.data.clear()  # 添加清空字典的方法

    @property
    def size(self): 
        return len(self.data)  # 添加只读属性获取字典大小 

在上述示例中,我们创建了一个名为CustomDict的类,它继承自 Python 内置的dict类。

通过重写一些字典的访问操作方法,如__getitem__、setitemdelitem__和__contains,我们可以在自定义类字典中添加额外的功能。

此外,还添加了一些自定义的方法,如keys、values、items、clear和size,以满足特定的需求。

二、自定义类用法

使用这个自定义字典类的方式与使用普通字典类似:

custom_dict = CustomDict() custom_dict=CustomDict()     
custom_dict['name'] = 'John' custom_dict['name']='约翰'
custom_dict['age'] = 25 custom_dict['年龄']=25      
print(custom_dict['name']) 打印(custom_dict['名称']print(custom_dict.keys()) 打印(custom_dict.keys())       
print(custom_dict.size) 打印(custom_dict.size)       

三、创建字典的其他方法

Python 中创建字典还有多种其他方法,例如:

  1. 直接创建空字典:dic = { }

  2. 直接赋值创建字典:dic = {‘name’: ‘jack’, ‘age’: 18, ‘height’: 180}

  3. 通过关键字dict和关键字参数创建:dic = dict(name=‘jack’, age=18,height=180)

  4. 通过关键字dict和二元组列表创建:lis = ((‘name’, ‘jack’), (‘age’,18), (‘height’,180)); dic = dict(lis)

  5. 通过关键字dict和zip创建:dic = dict(zip(‘abc’, (1, 2, 3)))

  6. 通过字典推导式创建:dic = {i: i**2 for i inrange(1, 5)}

  7. 通过dict.fromkeys()创建:dic = dict.fromkeys(range(4), ‘x’),通常用来初始化字典并设置value的默认值。

四、参考来源

  1. python创建字典(dict)的几种方法(详细版)

  2. python 自定义类字典

  3. 【Python】python创建字典(dict)的几种方法(含代码示例)

  4. https://www.bilibili.com/read/cv10143927/

  5. https://blog.51cto.com/u_16213419/10375050

  6. 如何在python中实现一个自定义的列表或字典

  7. 【python】文章、文本内容做词频统计(使用jieba分词,添加自定义字典)

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值