我正在尝试从数据集中创建一个表,该数据集应该能够提供数据集中的单词以及重复它们的次数。
例如:
数据集:{ moon, moon, moon, sun }
表格(最终结果):
('moon') ==> 3
('sun') ==> 1
我想使用字典并使用键进行播放,因此如果在迭代期间找到已经是键的单词,请不要将其添加到字典中(应该代表表)但是增加数值
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
.........
我是否应该针对此特定情况使用其他方法或数据结构?或者它只是代码?
答案 0 :(得分:4)
collections.Counter
可能就是你要找的东西:
>>> from collections import Counter
>>> Counter("moon,moon,moon,sun".split(","))
Counter({'moon': 3, 'sun': 1})
答案 1 :(得分:2)
你的字典键是一个元组是好的(虽然在你的帖子中它不清楚为什么你要点他的)。您需要做的就是确保在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
答案 2 :(得分:2)
我认为您需要的结构是集合包中的counter结构。你只需将它提供给你的单词列表,就会得到一个充满单词和计数的字典结构。