我有一本字典,上面有当月购买的水果。
字典如下:
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
我在所有其他地方都使用字典来显示单词在列表中的使用次数。我正在寻找一本字典,以找出另一个字典中提到一个单词的次数。
答案 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
(全部购买)中
接下来,我遍历allb
和if
,该项目已经是数字了:将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})