4

たとえば、辞書内に「 {(1,2):3,(2,3):4,(3:2):5...xmillion} それはキーとしてのタプルであり、対応する値を持つ」という形式のレコードが何百万もある場合

私がやりたいのは、tuple [1]=2の値のデータを取得することです。私のアプローチの1つは次のとおりです。

    for item, value in dict.iteritems():
      if item[1] == 2:
        Do operations here...

これは遅いアプローチですが、これを高速化するためのより良いアルゴリズムはありますか?のように..だから私は何百万ものアイテムを通過する必要はありません

4

2 に答える 2

1

キーとしてのタプルの辞書では、すべてのキーを反復処理して、。を含むキーを見つける必要がありkey[1] == 2ます。問題を解決する他の方法はありません。

于 2012-04-29T08:46:13.843 に答える
0

あなたが持っているのがその時の辞書だけである{(a,b):c}なら、あなたはこれ以上のことはできません:あなたはどのキーを持っているのかわからないのでb=2、それらすべてを見る必要があります。

自分で辞書を作成している場合はb=2、その段階でタプルを分離できるため、再度検索する必要はありません。それらを別の辞書(アイテムのみ)に保存するか、使用している辞書{(a,2):c}の構造を書き直すことができます(例{b:{(a,b):c}})。

于 2012-04-29T08:34:22.057 に答える