は私が簡略化され、大きな辞書は次のようになります:辞書の値を比較し、飛び出るキー
my_dict = {'a': [-33.27, -2.12, 5.23], 'b': [-57.11, 9.82, -26.13], ...}
ので、キーは文字列と値が浮動小数点数のリストであるです。値ペア:
は、私は何をしたい見つけて、いくつかの冗長キーを削除する基準を実行して、それのサイズを小さくすることです。
擬似コードにおける基準がある:すべてのキーiについて
、異なる鍵jが辞書に存在するかどうかを見つけるように:
value_of_key_i[0] > value_of_key_j[0] and
value_of_key_i[1] > value_of_key_j[1] and
abs(value_of_key_i[2]) < abs(value_of_key_j[2])
to_remove = []
for ilcs, iloads in running_load.items():
for jlcs, jloads in running_load.items():
if iloads[0] > jloads[0] and iloads[1] > jloads[1] and abs(iloads[2]) < abs(jloads[2]):
# print(iloads, jloads)
to_remove.append(ilcs)
break
for i in to_remove:
running_load.pop(i)
..
があります:は何私は仕事のために書いたことはこれですもっといい方法?発電機でこれを行うほうが効率的でしょうか。具体的には、any()
としましょう。
PS:私のアプローチで別の問題がいくつかの点での値そのものに対してテストされようとしている(とはい1は、そのとcontinue
けど...かどうかを確認できる)ので、それは平等のためにテストすることはできませんということです
これらの値に 'load.items()'をソートすれば恩恵を受けるかもしれません。あなたの基準を満たしていないことを知っているリストを見ることは避けてください。 –
良い点ですが、その順序で。私は値をソートできません。しかし、おそらく私は 'ordereddict'を使うことができ、' values [0] 'と言って順序を入れ、現在のキーの前のスライスだけを検索します。 –
どのような順序で値を戻しますか?彼らが進んでいるときに彼らが辞書から出て来るのと同じ順序であるという保証はありません。 –