Python 检查密钥是否属于字典,避免再次存储,并增加计数器

Python 检查密钥是否属于字典,避免再次存储,并增加计数器,python,dictionary,Python,Dictionary,我正试图从一个数据集中创建一个表,该表应该给出数据集中的单词以及它们重复的次数 例如: 数据集:{moon,moon,moon,sun} 表格(最终结果): 我想使用字典并使用键,因此,如果在迭代过程中找到一个已经是键的单词,不要将其添加到字典(应该表示表),而是增加数值 word_table = {} for word in document.split(): if word in word_table: word_table[word, somevalue] +=

我正试图从一个数据集中创建一个表,该表应该给出数据集中的单词以及它们重复的次数

例如:

数据集
{moon,moon,moon,sun}

表格(最终结果):

我想使用字典并使用键,因此,如果在迭代过程中找到一个已经是键的单词,不要将其添加到字典(应该表示表),而是增加数值

word_table = {}

for word in document.split():
    if word in word_table:
        word_table[word, somevalue] += 1
    else:
        word_table[word, somevalue] = 1
somevalue
是我与单词一起存储的辅助键。此值可以是。我之所以提到这一点,是因为我不确定这是否会导致问题(或者更好,我要比较的特定键的选择)

当我打印整本字典时,我会得到一长串单词作为键(程序不会检测到重复),计数器中有所有1个


输出:

('moon', 'yes') ==> 1
('moon', 'yes') ==> 1
('moon', 'yes') ==> 1
.........

对于这种特殊情况,我是否应该使用其他方法或数据结构?或者仅仅是代码?

你的字典键可以是一个元组(尽管在你的帖子中不清楚你为什么要给它加上点)。您需要做的就是确保在
if
语句中检查该元组:

word_table = {}

for word in document.split():
    if (word,somevalue) in word_table:
        word_table[word, somevalue] += 1
    else:
        word_table[word, somevalue] = 1

我相信您需要的结构是集合包中的结构。您只需将您的单词列表提供给它,就会得到一个充满单词和计数的字典结构。

这可能就是您要查找的:

>>> from collections import Counter
>>> Counter("moon,moon,moon,sun".split(","))
Counter({'moon': 3, 'sun': 1})

word,somevalue
的条目不是
word
的条目word正在检查
word
的条目。
>>> from collections import Counter
>>> Counter("moon,moon,moon,sun".split(","))
Counter({'moon': 3, 'sun': 1})