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对
这整个设置对我正在尝试做的事情有意义吗?请帮忙。
答案 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