你可以使用Python
ABC来定义自己的字典对象,它提供了定义
抽象基类的基础设施。然后根据需要重载Python字典对象的
pop
属性。请注意保留HTML标签。
from collections import Mapping
class MyDict(Mapping):
def __init__(self, *args, **kwargs):
self.update(dict(*args, **kwargs))
def __setitem__(self, key, item):
self.__dict__[key] = item
def __getitem__(self, key):
return self.__dict__[key]
def __delitem__(self, key):
del self.__dict__[key]
def pop(self, k, d=None):
return k,self.__dict__.pop(k, d)
def update(self, *args, **kwargs):
return self.__dict__.update(*args, **kwargs)
def __iter__(self):
return iter(self.__dict__)
def __len__(self):
return len(self.__dict__)
def __repr__(self):
return repr(self.__dict__)
演示:
d=MyDict()
d['a']=1
d['b']=5
d['c']=8
print d
{'a': 1, 'c': 8, 'b': 5}
print d.pop(min(d, key=d.get))
('a', 1)
print d
{'c': 8, 'b': 5}
注意:正如 @chepner 在评论中建议的那样,你可以重写 popitem
方法,该方法已经返回键/值对。
min
函数的输出存储在一个变量中。 - JBernardodict
。请查看heapq
模块。 - chepnersome_dict.popitem()
的可选参数 - 但文档中没有给出该参数,因此我认为不会有这样的方法。 - kratenko