我需要使用我拥有的集更新字典。我的程序基本上需要一个集合并将其分配给一个值(在字典中)。如果该集已经存在,我需要更新其值(继续将值加在一起)。
以下是我的程序现在的工作方式:
for line in fd:
new_line = line.split(' ')
for word in new_line:
new_word = ''.join(l for l in word if l.isalpha())
new_word = new_word.lower()
ind_count = 0
for let in new_word:
c_dict[let, ind_count] = new_word
ind_count += 1
在我的fd
文件中,它包含一个单词列表。
我希望我的结果看起来像这样:
print(c_dict)
{ (0, "h") : { "hello", "helps" } , (0, "c") : { "cow" } }
这实际上是从单词中取一个字母,它是索引#,并将值设置为该单词。我的文件将有数百个在位置0处有字母'h'的单词,基本上键(0,'h')将包含包含所有这些单词的值。
现在,我的程序只是替换了值。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:3)
dict.setdefault()
非常适合:
for line in fd:
new_line = line.split(' ')
for word in new_line:
new_word = ''.join(l for l in word if l.isalpha())
new_word = new_word.lower()
for ind_count, let in enumerate(new_word):
c_dict.setdefault((let, ind_count), set()).add(new_word)
请注意,我还将最里面的for循环更改为使用enumerate()
,而不是在循环内手动递增ind_index
。
c_dict.setdefault((let, ind_count), set()).add(new_word)
在行为上等同于以下代码:
if (let, ind_count) in c_dict:
c_dict[let, ind_count].add(new_word)
else:
c_dict[let, ind_count] = set([new_word])