Я пытаюсь построить словарь, где каждый ключ имеет значение, которое является самим словарем. Проблема с помощью следующего кода, что он не добавляет новый элемент в словарь, когда новый, если это делаетсяСловарь словарей в цикле в Python
dict_features = {}
def regexp_features(fileids):
for fileid in fileids:
if re.search(r'мерзавец|подлец', agit_corpus.raw(fileid)):
dict_features[fileid] = {'oskorblenie':'1'}
else:
dict_features[fileid] = {'oskorblenie':'0'}
if re.search(r'честны*|труд*', agit_corpus.raw(fileid)):
dict_features[fileid] = {'samoprezentacia':'1'}
else:
dict_features[fileid] = {'samoprezentacia':'0'}
return dict_features
Результат является ДИКТ
{'neagitacia/20124211.txt': {'samoprezentacia': '0'}, 'agitacia/discreditacia1.txt': {'samoprezentacia': '0'}
Но мне нужно
{'neagitacia/20124211.txt': {'oskorblenie':'1', 'samoprezentacia': '0'}, 'agitacia/discreditacia1.txt': {'oskorblenie':'0', 'samoprezentacia': '0'}
Спасибо! Я попробовал dict_features [fileid] ['oskorblenie'] = '1', но без дефолта он произвел KeyError. Теперь это работает. –
@VicNicethemer: Это то, как работают defaultdicts, поскольку для несуществующих ключей они дают значение по умолчанию для ключа, с помощью которого вы можете назначить ему материал. Рад, что мой ответ был полезен. :) –