我需要使用我拥有的集合来更新字典。我的程序基本上需要获取一个集合并将其分配给一个值(在字典中)。如果集合已经存在,我需要更新它的值(继续将这些值加在一起)。
现在我的程序是这样工作的:
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') 将具有包含所有这些单词的值。
现在,我的程序只是替换值。任何帮助将不胜感激。
谢谢!
请您参考如下方法:
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])
