クラスの主な機能は、キーとしての単語と値としての ID 番号を持つ辞書です(注: エントリの一部が削除されているため、ID は連続していません)。
x = {'foo':0, 'bar':1, 'king':3}
customdict
私が作成したクラスの iterator 関数を書いたときrange(1 to infinity)
、KeyError のために反復処理中に壊れます。
class customdict():
def __init__(self,dic):
self.cdict = dic
self.inverse = {}
def keys(self):
# this is necessary when i try to overload the UserDict.Mixin
return self.cdict.values()
def __getitem__(self, valueid):
""" Iterator function of the inversed dictionary """
if self.inverse == {}:
self.inverse = {v:k for k,v in self.cdict.items()}
return self.inverse[valueid]
x = {'foo':0, 'bar':1, 'king':3}
y = customdict(x)
for i in y:
print i
try and except
にアクセスせずに、クラスlen(x)
内の辞書の反復をどのように解決できますか? customdict
理由 x は >>> であり、len(x) はリアルタイムでは時間がかかりすぎます。
試してみたところUserDict.DictMixin
、突然機能しました。なぜそうなのですか?:
import UserDict.DictMixin
class customdict(UserDict.DictMixin):
...
__future__
どうにかして python3 で mixins が廃止されたように見えるので、Mixin を使用しないようにする方法はありますか?