如何在Python 3中打印defaultdict中所有索引的列表?
我定义了一个叫做 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
属性。