from collections import OrderedDict od = OrderedDict() keys = [] hashes = [] def init(name, maxsize=11): if len(od) == maxsize: oldkey, _ = od.popitem(last=False) try: od.__delitem__(oldkey) except KeyError: pass key = ('https', name+'.wikipedia.org', 443) h = hash(key) for i, hs in enumerate(hashes): if h == hs: if key != keys[i]: print('X ', end='') print('collision {} ({!r} / {!r}'.format(h, key, keys[i])) break hashes.append(h) keys.append(key) try: od.pop(key) except KeyError: pass try: od.pop(key) except KeyError: pass od.__setitem__(key, "") #init('ar') #init('arz') #init('bar') init('be-x-old') init('bg') init('bs') init('ca') init('ckb') init('cs') # <-- resize? init('da') init('de') ########### init('dsb') init('en') init('eo') init('es') init('et') init('fa') init('fi') init('fr') init('frr') init('gl') init('hsb') init('hu') init('ia') init('is') init('it') init('ja') init('km') init('ko') init('mk') init('mr') init('no') init('nds') init('ne') init('nn') init('or') init('pl') init('pt') init('ro') init('ru') init('sco') init('sh') init('sk') init('sl') init('so') init('sv') init('th') init('tl') init('tr') init('uk') init('ur') init('vi') init('zh') init('ar') # repeat init('as') init('ast') init('bar') # repeat init('be-x-old') # repeat init('bn') init('bs') # repeat init('ca') # repeat init('cs') # repeat init('da') # repeat init('de') # repeat init('diq') init('dsb') # repeat init('en') # repeat init('eo') # repeat init('es') # repeat init('fa') # repeat init('fi') # repeat init('fr') # repeat init('frr') # repeat init('ga') init('gl') # repeat init('als') init('hu') # repeat init('ia') # repeat init('id') init('ilo') init('it') # repeat init('ko') # repeat init('ksh') init('lb') init('li') init('mg') init('mk') # repeat init('ml') init('mt') init('mzn') init('no') # repeat init('nds') # repeat init('nds-nl') init('ne') # repeat init('nl') init('nn') # repeat init('pdc') init('pl') # repeat od.popitem(last=False)