您可以使用Python ABC S的提供了定義abstract base classes基礎設施自行定義字典對象。然後重載Python字典對象的pop
屬性根據您的需要:
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'輸出在一個變量 – JBernardo
@JBernardo我曾想到這一點。這顯然更好,但我仍然覺得應該有一個更好的方式沒有一個。 –
你可能想要一堆,而不是'dict'。查看'heapq'模塊。 – chepner