【问题标题】:Dictionary with array of different types as value in Python具有不同类型数组的字典作为Python中的值
【发布时间】:2016-01-19 14:29:38
【问题描述】:

我正在学习 Python,我有一本这样的字典:

category = { "World news": [0], "Politics": [0], ... }

现在我正在从文件中读取文章。每篇文章都有一个类别。所以我希望当一个类别满足时,我必须将每个键的 0 增加 1,并用它找到的文章来增加每个键的数组。所以输出将是:

category = {  "World news": [2, "foo bla content of", "content of 2nd article"],
              "Politics": [1, "only 1 article here"],
              ...
}

这是我现在拥有的:

for row in iter_reader:
    category[row[4]][0] = category[row[4]][0] + 1
    category[row[4]].append(category[row[3]])

但我认为它将文章解释为键并引发相关错误:

文件“./wordCloud.py”,第 41 行,在 类别[行[4]].append(类别[行[3]]) KeyError: '当 Apple 在 2010 年 1 月推出它时..

有什么想法吗?


row[4] 是文章的类别。 row[3]是文章内容。

正如 Bryan Oakley 所说,我不需要专柜,所以我现在正在朝这个方向思考……

【问题讨论】:

  • 为什么要设置柜台?可以使用len函数获取文章数量。
  • 哦不知道@BryanOakley。这是有道理的,举个例子就好了。我正在努力按照你现在所说的去做。
  • 看来你只是放错了一些索引,但没有看到row 很难说。此外,stackoverflow 不是调试器。
  • @Joost row 索引很好。当然不是,这就是我在这里询问的原因。你看问题不在于索引,问题是我没有理解 Python 中的好东西。 :) 我正在更新。
  • 啊,添加该错误确实有帮助。我想我会发布一个答案。

标签: python dictionary


【解决方案1】:

在第三行中,您将附加category[row[3]],您可能应该只是附加row[3]。您当前使用row[3] 作为类别列表的索引,但我怀疑row[3] 实际上是您要附加的内容。

【讨论】:

    【解决方案2】:

    假设您将每篇文章存储在字典中,其中键是内容,值是类别。您可以使用如下代码:

    categories = {"news"     : [0],
                  "politics" : [0]}
    
    articles = {"content1" : "news",
                "content2" : "politics"}
    
    for key, value in articles.items():
        for keyDic, valDict in categories.items():
            if (value == keyDic):
                valDict[0] += 1
                valDict.append(key)
                continue
    

    【讨论】:

    • Grazie Giovanni,但事实并非如此,因为我希望每个类别都有所有对应的内容。 articles.items() 给了你什么?我是 Python 的新手。 +1 虽然是一种新方法。
    • 方法items()返回一个字典元组对(键,值)的列表。在我的示例中,category 字典以标签字符串作为键,以列表作为值,其中位置 [0] 处的元素是计数器,以下是对应的内容。例如,如果您打印生成的 category 字典,您将得到以下输出:{"news" : [1, "content1"], "politics", [1, content2] } that is your desidered output. I used the articles` 字典来存储您的输入,因为我不知道您的文件结构。
    猜你喜欢
    • 2012-04-23
    • 2016-04-23
    • 2020-11-05
    • 1970-01-01
    • 2011-02-25
    • 2019-03-10
    • 2022-01-19
    • 2014-04-27
    • 1970-01-01
    相关资源
    最近更新 更多