3

2 つのインデックスでインデックス付けされたデータがたくさんあります。現在、次のようなネストされた辞書として物を保存しています

{1000: {3: 1.0, 4: 2.0}, 1001: {3: 3.0, 4: 4.0} , 1002: {3: 5.0, 4: 0.0}}

だから私はでデータにアクセスできますmydata[1000][4]mydata.get(second=4)[ _2.0, 4.0, 0.0]

ネストされた辞書は機能しますが、IMO はかなり面倒です。私は最近、これらの構造を 100,000 エントリで構築し始めましたが、ネストされた辞書の最初の構築は非常に遅いことがわかりました。

2つのインデックスを持つデータを持つより自然な、またはよりpythonicな方法はありますか? 内部インデックスが常に同じセットである場合に役立ちますか?

4

1 に答える 1

-1

ビットスライスを悪用することでこれを達成できるかもしれません:

#! /usr/bin/python3

class MyDict:
    def __init__ (self, d):
        self.d = d

    def __getitem__ (self, key):
        if isinstance (key, int):
            return [_ for _ in self.d [key].values () ]
        if isinstance (key, slice):
            if key.start == None:
                return [v for s in (d.items () for d in self.d.values () ) for k, v in s if k == key.stop]
            if key.stop == None:
                return [_ for _ in self.d [key.start].values () ]
            return self.d [key.start] [key.stop]
        [] [key]

d = {1000: {3: 1.0, 4: 2.0}, 1001: {3: 3.0, 4: 4.0} , 1002: {3: 5.0, 4: 0.0}}
d = MyDict (d)

print (d [1000] )
print (d [1000:] )
print (d [:4] )
print (d [1001:4] )
于 2013-09-17T20:03:00.023 に答える