Skip to main content
 首页 » 编程设计

python之操作字典中的集合

2024年08月29日37xxx_UU

我需要使用我拥有的集合来更新字典。我的程序基本上需要获取一个集合并将其分配给一个值(在字典中)。如果集合已经存在,我需要更新它的值(继续将这些值加在一起)。

现在我的程序是这样工作的:

    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])