您可以稍微修改code from here以添加large_keys
屬性。現在,每當這些大紀元中的一個被添加時,字典就會跟蹤它們。當你想迭代它們時,你可以簡單地遍歷該屬性。
class MyUpdateDict(dict):
def __init__(self, *args, **kwargs):
self.large_keys = []
self.update(*args, **kwargs)
def __setitem__(self, key, value):
# optional processing here
if int(key)>1363033000:
self.large_keys.append((key,value))
super(MyUpdateDict, self).__setitem__(key, value)
def update(self, *args, **kwargs):
if args:
if len(args) > 1:
raise TypeError("update expected at most 1 arguments, got %d" % len(args))
other = dict(args[0])
for key in other:
self[key] = other[key]
for key in kwargs:
self[key] = kwargs[key]
def setdefault(self, key, value=None):
if key not in self:
self[key] = value
return self[key]
這可能過於簡單化,因爲大值是硬編碼的,但您可以修改以使其更適合。
小心:你已經在你的例子中重新定義了''dict''內置類。儘量避免使用像''file'',''dict'',''list'',''set'這樣的名字,否則你將無法像預期的那樣在代碼中使用它們。 – 2013-03-11 21:25:21
@BalthazarRouberol在我的代碼中,我使用了一個獨特的變量,感謝您的高舉! – somecallmemike 2013-03-12 03:21:59
絕對的,在這種情況下,它不會引起任何問題,但這只是一個好習慣。 – 2013-03-12 09:11:46