使用python词典计数并添加功能

时间:2011-06-02 12:31:42

标签: python dictionary counter

 a = 0
 b = 0
 c = 0
 d = 0

fruit = {
'lemons': [],
'apples': [],
'cherries': [],
'oranges': [],
 }


def count():
    fruit = input("What fruit are you getting at the store? ")
    if fruit == 'lemons':
        fruit['lemons'] = a + 1
    elif fruit == 'apples':
                fruit['apples'] = b + 1
    elif fruit == 'cherries':
                fruit['cherries'] = c + 1

    elif fruit == 'oranges':
                fruit['oranges'] = d + 1
    else: ????
嘿,我正在尝试做两件事:1)计算某个单词的出现次数(在这种情况下,某些类型的水果)出现在一个文档中 - 我试图在这里模拟简单的输入功能。我知道它并不完美,但我无法弄清楚如何使每次出现增加适当的键增量值。例如,如果我调用此函数两次并输入“lemons”,则计数应为2,但它仍为1.换句话说,我的函数是柠檬,但我不知道为什么。

我遇到的最后一件事是else功能。 2)我的程序将查找文档的预定义部分,如果现有密钥不存在,我希望我的其他函数在字典中创建一个键:值对。例如,如果我的程序遇到单词'banana',我想将k:v pair {'banana':[]}添加到当前字典中,以便我可以开始计算这些事件。但似乎这需要我不仅要将k:v对添加到字典中(我不知道该怎么做),而是添加一个函数和变量来计算其他k的出现次数:v对

这整个设置对我正在尝试做的事情有意义吗?请帮忙。

2 个答案:

答案 0 :(得分:4)

您似乎有多个名为fruit的变量,这是一个坏主意。如果您只算数,则应该从0开始,而不是[]。您可以更轻松地编写代码:

import collections
result = collections.defaultdict(int)
def count():
    fruit = input("What fruit are you getting at the store? ")
    result[fruit] += 1

在Python 3.1+中,您应该使用collections.Counter而不是collections.defaultdict(int)。如果您根本不想使用collections模块,还可以写出defaultdict功能:

result = {}
def count():
    fruit = input("What fruit are you getting at the store? ")
    if fruit not in result:
        result[fruit] = 0 # Create a new entry in the dictionary. 0 == int()
    result[fruit] += 1

答案 1 :(得分:0)

你可以这样做:

fruits = {
    'lemons': 0,
    'apples': 0,
    'cherries': 0,
    'oranges': 0,
}

fruit = input("What fruit are you getting at the store? ")

if fruits.has_key(fruit):
   fruits[fruit] += 1