1

私はそれが私に与えるエラーを探しましたが、私はそれをよく理解していません。彼らは で何かをしましfor k, v in dbdata.itemsたが、それは私にとってもうまくいきませんでした。他のエラーが発生します。

さて、複数のアイテムを削除したいです。

tskinspath = ['1', '2']   

#
dbdata = {}
dbdata['test'] = {}
dbdata['test']['skins_t'] = {}

# Adds the items
dbdata['test']['skins_t']['1'] = 1
dbdata['test']['skins_t']['2'] = 0
dbdata['test']['skins_t']['3'] = 0
dbdata['test']['skins_t']['4'] = 0

# This doesn't work
for item in dbdata["test"]["skins_t"]:

     if item not in tskinspath:

        if dbdata["test"]["skins_t"][item] == 0:

                    del dbdata["test"]["skins_t"][item]

# exceptions.RunetimeError: dictonary changed size during iteration
4

3 に答える 3

0

エラーメッセージは次のように述べています。繰り返し処理している辞書を変更しないでください。試す

for item in set(dbdata['test']['skins_t']):
   ...

このようにして、 からのすべてのキーを含むセットを反復処理しますdbdata['test']['skins_t']

于 2013-10-07T10:59:38.790 に答える