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

时间:2014-03-23 03:37:39

标签: python defaultdict

我定义了一个defaultdict,如下所示:

results=defaultdict(list)

在读取字典文件中每一行的for循环中,我生成一个tempWordObject,其中包含原始单词(originalWord),其字母顺序版本(azWord)和单词长度(wLength)。然后我根据长度将对象附加到列表中:

results[tempWordObject.wLength].append(tempWordObject)

所以,我最终应该得到的是一个名为results的默认符号,它包含基于长度的单词列表。因此,例如,结果[4]应该包含列表中的所有4个字母单词。如果我误解了发生的事情,请纠正我。

我尝试做的事情(出于测试目的并稍后生成结果)是在我读完文件后打印出defaultdict中的所有列表。因此,它将在第一行打印word对象列表defaultdict [1],在第二行打印defaultdict [2]中的单词对象列表等。我还希望能够仅打印特定参数时我这样做。

如果有任何帮助,一旦完成循环,我将获得最长字(maxL)的长度。

我认为我无法解决这个问题的部分原因是由于我误解了如何存储在defaultdict和/或我如何存储它。非常感谢您的解释。

1 个答案:

答案 0 :(得分:3)

按顺序循环遍历键:

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

defaultdict仍然是字典; sorted(results)返回该字典中所有键的列表,已排序。然后,使用每个键,您可以使用results[length]再次访问存储的特殊对象列表。列表理解仅从这些对象中提取每个originalWord属性。