【问题标题】:How do I print the lists of all the indices within defaultdict in Python 3?如何在 Python 3 中打印 defaultdict 中所有索引的列表?
【发布时间】:2014-03-23 03:37:38
【问题描述】:

我定义了一个defaultdict如下:

results=defaultdict(list)

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

results[tempWordObject.wLength].append(tempWordObject)

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

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

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

我认为我无法使其正常工作的部分原因是我误解了如何存储在 defaultdict 中和/或我如何存储它。非常感谢您的解释。

【问题讨论】:

    标签: python defaultdict


    【解决方案1】:

    只需按排序顺序遍历键:

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

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

    【讨论】:

    • 因为defaultdict仍然是mapping,就像dict一样。
    • 我的主要问题是它一直像这样打印,例如:7 [<__main__.word object at>, <__main__.word object at>, <__main__.word object at> , <__main__.word object at>]
    • 然后迭代这些列表并适当地访问它们。
    • 对不起,我不太清楚您所说的遍历列表是什么意思。您能否对此进行扩展和/或提供一个示例?
    • @Michi:我添加了一个列表推导,让你为你抽出原话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多