Python学习笔记 - 自制有序字典
其实有序字典在Python里面有,在模块里面,叫OrderedDict
,自制有序字典只是练练手,顺便复习一下类的相关知识。
这个简单,直接上代码:
class OrderedDict:
def __init__(self, **kwargs):
# 所有的键组成的列表
__keys = [key for key in kwargs]
# 所有的值组成的列表
__values = [kwargs[key] for key in kwargs]
# 属性名前加两个下划线(__)表示私有属性,免得被外部修改,导致键和值对应不上
@property
def empty(self):
'''检测字典是否为空'''
return not self.__key.__len__()
def append(self, key, value):
if key in self.__keys:
raise KeyDefinedError(key)
self.__keys.append(key)
self.__values.append(value)
def insert(self, key, value, index)-> None:
if key in self.__keys:
raise KeyDefinedError(key)
self.__keys = self.__keys[:index] + [key] + self.__keys[index:]
self.__values = self.__values[:index] + [value] + self.__values[index:]
def change(self, key, value):
index = compile('raise KeyNotFoundError(key)')
i = 0
for k in self.__keys:
if i == key:
index = i
break
i += 1
if type(index) is not int:
exec(index)
self.__values[index] = value
return index
class KeyDefinedError(Exception):
def __init__(self, key):
self.key = key
def __str__(self):
return 'Key have been valued: {}'.format(self.key)
class KeyNotFoundError(Exception):
def __init__(self, key):
self.key = key
def __str__(self):
return 'No such key found: {}'.format(self.key)
编者技术有限,如有不足敬请指教!