40

辞書が空かどうかを確認するには? より具体的には、私のプログラムは辞書のいくつかのキーで始まり、辞書にキーがあるまで繰り返すループがあります。全体的なアルゴは次のようになります。


dictにキーがあるときに、dict のキーから開始します
dict の最初のキーで何らかの操作を行います 最初のキーを
削除します

some operation上記のループでは、辞書に新しいキーが追加される場合があることに注意してください。私はもう試した for key,value in d.iteritems()

ただし、 while ループ中にいくつかの新しいキーが追加されているため、失敗しています。

4

7 に答える 7

15

これはそれを行います:

while d:
    k, v = d.popitem()
    # now use k and v ...

ブール コンテキストの辞書は、空の場合は False、それ以外の場合は True です。

辞書は順序付けされていないため、辞書には「最初の」項目はありません。ただし、popitem は毎回いくつかのアイテムを削除して返します。

于 2012-11-09T16:32:04.537 に答える
8

その方法はよりPythonicであり、オンラインに適合すると思います:

関数を使用してのみ値を確認する必要がある場合:

if filter( your_function, dictionary.values() ): ...

辞書にキーが含まれているかどうかを知る必要がある場合:

if dictionary: ...

とにかく、ここでループを使用するのは Python 方式ではありません。

于 2012-11-09T20:57:52.727 に答える
2

私の知る限り、 for ループはiter関数を使用しており、繰り返し処理中に構造体を台無しにしないでください。

辞書である必要はありますか?リストを使用する場合、次のようなものが機能する可能性があります。

while len(my_list) > 0:
    #get last item from list
    key, value = my_list.pop()
    #do something with key and value
    #maybe
    my_list.append((key, value))

my_list はタプル (キー、値) のリストであることに注意してください。唯一の欠点は、キーでアクセスできないことです。

編集:気にしないでください。上記の答えはほとんど同じです。

于 2012-11-09T16:47:36.107 に答える