1

キーと値がインターネットから更新される辞書があります。このディクショナリは、(何らかの理由で) 更新のたびにキー/変数の位置と数を変更し続けますが、キーの名前と値の形式は同じままです。最初は、そのキーと値を別の配列に変換し、配列の場所に従って値をデータベースに保存していましたが、その可変性を発見した後、len(dictionary ) 変化し続けます。ディクショナリ項目は、更新ごとに URL からフェッチされます。これにより、31 個の項目 (各項目はキー:値) が得られることもあれば、辞書に 3、29、28、または 27 個の項目が得られることもあります。だから、私はいくつかの「常にそこにある」アイテムについて一般化を行い、今ではすべての更新でそれらを抽出したいのですが、それらの順序に従ってではありません. しかし、彼らの鍵によると。もっと似ています:辞書で特定のキーワードを検索し、対応する値を変数に保存する必要があります。たとえば、ある更新のキーは次のとおりです。

>>> len(dict.keys())
>>> 30

別の更新で:

>>> len(dict.keys())
>>> 26

これは、辞書内の項目数が変動し続けることを示しています。ただし、いくつかの必須のキー (以下で言及) のリストを書き留めておきます。これらは常にそこにあるため、更新されるたびにそれらを探す必要があります。より正確に言えば、特定のキー (おそらく検索による) とそれに対応する値を辞書から抽出し、データベースに保存できるように、それらの両方を異なる変数に保存する方法が必要です。検索するキーは次のとおりです。

  • temp_f
  • 相対湿度
  • wind_dir
  • pressure_mb
  • 位置

ありがとう。

4

2 に答える 2

1

私があなたの問題をよく理解していれば、辞書内のキー/値の順序を維持する必要はなく、不要なキーから辞書を取り除き、興味のあるキーの名前を変更したいだけです.あなたの懸念は、いくつかのキーが行方不明になることも。私ならこの方法で解決します。

new_dict = {
    'tf' : original_dict.get('temp_f', None),
    'rh' : original_dict.get('relative_humidity', None),
     # And so on...
}
于 2012-11-12T16:08:45.563 に答える
0

順序を維持したい場合はcollections.OrderedDict、通常の代わりに使用しますdict

于 2012-11-12T15:59:37.140 に答える