我通过字典迭代,如果某些条件匹配,则删除字典项目。现在字典动态索引得到更新。在删除项目后坚持字典索引
例如
{u'Titanic': {'match': [{'category': u'Book'},
{'category': u'Movie'},
{'category': u'Product'}],
'score': 100}}
虽然迭代match
,如果我删除Book
(指数 - 0),所以现在下一个迭代过程中它显示我product
(指数 - 1)直接,考虑到指数0 movie
。它考虑已经迭代的索引-0。
代码剪断:
for k1,v1 in enumerate(value['match']):
if k1 != '':
print '\n Category: ',k1,' ',v1['category']
print 'Do you want to change the class of entity',k1 ,'? Y/N', 'Or delete', k1, '1/0'
choice = raw_input()
if choice == 'N' or choice == 'n':
pass
elif choice == 'Y' or choice == 'y' :
print '\tEnter class : \t'
v1['category'] = raw_input()
tagged = string.replace(sentence, key, v1['category'])
tagged_ans.append(tagged)
elif choice == '1':
del v1['category']
del value['match'][k1]
在这种情况下如何保持当前索引和不跳过任何项的迭代。在上面的示例中movie
可以跳过
你真正的问题是什么? – 2014-11-24 07:09:30
@RikVerbeek:对不起,更新了问题 – puncrazy 2014-11-24 07:16:51
不要删除字典中的键,你正在更新字典并同时增加计数器,这就是为什么指针在第二次迭代中移动到第三项的原因。 – 2014-11-24 07:38:28