计算字典中的单词

时间:2019-02-23 19:29:28

标签: python dictionary

我有一本字典,上面有当月购买的水果。

字典如下:

bought = {
January: ['Apple', 'Banana', 'Orange', 'Kiwi', 'Raspberry'],
February: ['Orange', 'Mango', 'Banana'], 
March: ['Apple', 'Starfruit', 'Apricot']
}

有什么办法可以列出每个水果购买了多少次。

我希望输出看起来像这样

Apple: 2, Banana: 2, Orange: 2, Kiwi: 1, Raspberry: 1, Mango: 1, Starfruit: 1, Apricot: 1

我在所有其他地方都使用字典来显示单词在列表中的使用次数。我正在寻找一本字典,以找出另一个字典中提到一个单词的次数。

4 个答案:

答案 0 :(得分:3)

您的第一个问题是获取计数,因此我们将重组为一个名为var array_list = [1,2,3,4,5, "token",6, 7, "best","life", "living"]; function printReverse(list){ for(var i=list; i >= 0; i--){ console.log(list[i]); } } printReverse(array_list); 的新词典:

out

此for循环仅遍历out = {} for month in bought: for fruit in bought[month]: out[fruit] = out.get(fruit, 0) + 1 中的所有键(月),并遍历在那里找到的列表。在读取该列表中的水果时,它会检查该水果是否已经在bought中。如果不是,它将在out中将该水果初始化为out。最后,它将值增加一。

现在我们需要以所需的格式打印:

0

Python中的字符串格式非常成熟。例如,您可以在https://pyformat.info/学习各种技巧。在这里,我们在迭代for k in out: print("{}: {}".format(k, out[k])) 时,只需将键然后值插入字符串模板。

答案 1 :(得分:2)

我很快就把它们放在一起了。

代码:

bought = {
"January": ['Apple', 'Banana', 'Orange', 'Kiwi', 'Raspberry'],
"February": ['Orange', 'Mango', 'Banana'], 
"March": ['Apple', 'Starfruit', 'Apricot']
}

numbers = {}
allb = []
for month in bought:
    allb += bought[month]
for item in allb:
    if item in numbers:
        numbers[item] += 1
    else:
        numbers[item] = 1
print(numbers) # Note you can format this however you want: just iterate through the dictionary again

预期输出:

Apple: 2, Banana: 2, Orange: 2, Kiwi: 1, Raspberry: 1, Mango: 1, Starfruit: 1, Apricot: 1

实际输出:

{'Apple': 2, 'Banana': 2, 'Orange': 2, 'Kiwi': 1, 'Raspberry': 1, 'Mango': 1, 'Starfruit': 1, 'Apricot': 1}

(由于numbers是一本字典,因此您可以做非常强大的事情来查找数字。在这种情况下,它的作用就像一张桌子。)

第一个for循环遍历购买的所有键(格式化后的所有月份),并查找它们的值。然后将这些值添加到我的列表allb(全部购买)中 接下来,我遍历allbif,该项目已经是数字了:将1加到计数上,否则将计数设置为1。

答案 2 :(得分:2)

使用内置计数器。一根衬里:-)

from collections import Counter

bought = {
    "January": ['Apple', 'Banana', 'Orange', 'Kiwi', 'Raspberry'],
    "February": ['Orange', 'Mango', 'Banana'],
    "March": ['Apple', 'Starfruit', 'Apricot']
}

count = Counter([y for x in bought.values() for y in x])
print(count)

答案 3 :(得分:1)

您可以使用Counter

from collections import Counter
from itertools import chain
from pprint import pprint

c = Counter(chain.from_iterable(bought.values()))

pprint(c)

输出:

Counter({'Apple': 2,
         'Banana': 2,
         'Orange': 2,
         'Kiwi': 1,
         'Raspberry': 1,
         'Mango': 1,
         'Starfruit': 1,
         'Apricot': 1})