我有一个默认字典,我通过几个循环来查找字典中的某些字符串。循环实际上并没有向字典中添加任何内容,因为在循环过程中,新的条目不断地添加到字典中,最终的字典比循环之前的原始字典大。 我一直试图找出错误,但现在已经晚了,我不知道是什么原因造成的
from collections import defaultdict
dummydict = defaultdict(list)
dummydict['Alex'].append('Naomi and I love hotcakes')
dummydict['Benjamin'].append('Hayley and I hate hotcakes')
part = ['Alex', 'Benjamin', 'Hayley', 'Naomi']
emp = []
for var in dummydict:
if 'I' in dummydict[var]:
emp.append(var)
for car in part:
for key in range(len(dummydict)):
print('new len', len(dummydict))
print(key, dummydict)
if car in dummydict[key]:
emp.append(car)
print(emp)
print('why are there new values in the dictionary?!', len(dummydict), dummydict)
我希望这本词典保持不变
访问
dummydict[key]
中丢失的键将把这些键添加到defaultdict中。请注意,key
是int
,而不是该位置的值,因为for key in range(len(dummydict))
迭代索引,而不是dict或其键参见docs:
例如,此代码将显示一个dummydict,其中包含一个值,因为只要访问
dummydict[key]
就会将该键添加到dict中,如果该键还不存在输出:
您的问题是在循环中执行
dummydict[key]
和dummydict[var]
之类的操作,这会添加这些键key
是一个整数,并且您的dict最初只填充字符串作为键,这将在dummydict
中为每个key
创建一个新值相关问题 更多 >
编程相关推荐