キーが非順次整数である辞書「vcomments」があります。キーをループするときは、ソート済みまたは逆ソートの順序でループする必要があります。現在使用しています
for key_pt in sorted(self.view.vcomments.iterkeys()):
しかし、特定の数を超えている、または前にあるキー(または次のキー)も見つける必要があります。
if direction == 'down':
sorted_pts = (key_pt for key_pt in sorted(self.view.vcomments.iterkeys()) if key_pt > curr_pt)
else:
sorted_pts = (key_pt for key_pt in reversed(sorted(self.view.vcomments.iterkeys())) if key_pt < curr_pt)
try:
next_pt = sorted_pts.next()
except StopIteration:
ディクショナリを格納し、順方向または逆方向のいずれかでループできるようにするイテレータクラスを(イテレータプロトコルを使用して)作成することは可能ですか?次のループを順方向/逆方向にするかどうかを示す属性値を最初に割り当てる必要があるかもしれないと想定/推測しています。
次のキーを取得できるようにするジェネレーター関数(ネストされた)をイテレータークラスに含めることはできますか?つまり、指定された整数を超えているか、またはその前ですか?
同様に、開始点と終了点を指定して、これらの値の間にあるすべてのキーを(ソートされた順序で)取得する方法はありますか?
私は3つの(関連はあるが)質問をしたことをお詫びします-最初の答えは私にスタートを与えるでしょう。そして、私は完全な解決策を期待するほど失礼ではありません。これらが私にとって実行可能な目標であるかどうかを示すだけです。
追加:そして、キーによって単一の特定の辞書アイテムを取得できる必要があります。