0

次のような辞書があるとします。

my_dict = {
           hey: onevalue,
           hat: twovalue,
           how: threevalue
           }

変数を持っているときにキーへの参照を説明する方法はありますか?その中に数字がありますか?

my_dict['hey1'] = onevalue または my_dict['hey2'] = onevalue など

キーへの参照から数字を取り除くのではなく、そのような変数を許可しようとしています。前もって感謝します。

4

2 に答える 2

0

存在しない。(ハッシュ テーブルとして) 辞書がどのように機能するかにより、必要なものに対応する方法がありません。独自の型を作成し__*item__()、ロジックを実装するメソッドを定義する必要があります。

于 2013-07-25T05:42:13.240 に答える
0

この回答に基づいて、独自の dict 互換タイプを定義して末尾の数字を削除できます。

import collections

class TransformedDict(collections.MutableMapping):
    """A dictionary which applies an arbitrary key-altering function before accessing the keys"""

    def __init__(self, *args, **kwargs):
        self.store = dict()
        self.update(dict(*args, **kwargs)) # use the free update to set keys

    def __getitem__(self, key):
        return self.store[self.__keytransform__(key)]

    def __setitem__(self, key, value):
        self.store[self.__keytransform__(key)] = value

    def __delitem__(self, key):
        del self.store[self.__keytransform__(key)]

    def __iter__(self):
        return iter(self.store)

    def __len__(self):
        return len(self.store)

    def __keytransform__(self, key):
        for i in xrange(len(key)-1,-1,-1):
          if not key[i].isdigit():
            break
        return key[:i]

a = TransformedDict()
a['hello'] = 5
print a['hello123']

>>> 5
于 2013-07-25T05:54:40.650 に答える