如何在Python 3中打印defaultdict中所有索引的列表?

0 投票
1 回答
887 浏览
提问于 2025-04-17 23:29

我定义了一个叫做 defaultdict 的东西,具体是这样定义的:

results=defaultdict(list)

在一个循环里,我逐行读取我的字典文件。每读取一行,我就生成一个临时的单词对象,这个对象包含了原始单词(originalWord)、它的字母顺序版本(azWord)和单词的长度(wLength)。然后,我根据单词的长度把这个对象添加到一个列表里:

results[tempWordObject.wLength].append(tempWordObject)

所以,最后我应该得到一个叫做 results 的 defaultdict,它里面有根据单词长度分类的单词列表。比如说,results[4] 应该包含所有四个字母的单词,放在一个列表里。如果我理解错了,请纠正我。

我现在想做的是,在读取完文件后,打印出 defaultdict 里所有的列表。也就是说,第一行打印 defaultdict[1] 的单词对象列表,第二行打印 defaultdict[2] 的列表,以此类推。我还希望能在打印时只显示特定的参数。

如果有帮助的话,循环结束后我会知道最长单词的长度(maxL)。

我觉得我没能让这个工作正常的部分原因是我误解了 defaultdict 是怎么存储数据的,或者我存储数据的方式有问题。希望能得到一些解释。

1 个回答

3

只需要按顺序遍历这些键:

for length in sorted(results):
    print length, [t.originalWord for t in results[length]]

一个 defaultdict 仍然是一个字典; sorted(results) 会返回这个字典中所有键的一个排序列表。然后你可以用每个键来再次访问存储的特殊对象列表,方法是使用 results[length]。这个列表推导式只是从这些对象中提取出每个 originalWord 属性。

撰写回答