我有以下代码,这些代码贯穿单词列表并递增表示颜色的变量,如下所示:
white = 0
gold = 0
silver = 0
grey = 0
lavender = 0
pink = 0
red = 0
green = 0
blue = 0
#list of colors
colors = ['white','gold','silver','grey','lavender','pink','red','green','blue']
#increment color variables accordingly
for i in wordList:
if colors[0] in i:
white+=1
if colors[1] in i:
gold+=1
if colors[2] in i:
silver+=1
if colors[3] in i:
grey+=1
if colors[4] in i:
lavender+=1
if colors[5] in i:
pink+=1
if i == colors[6]:
red+=1
if colors[7] in i:
green+=1
if colors[8] in i:
blue+=1
我觉得必须有更好的方法来执行此操作,但是我不确定它是什么。 谢谢。
答案 0 :(得分:1)
我认为您正在寻找的是Counter
。
该字典将返回具有名称和数字出现的字典
from collections import Counter
d = Counter(wordList)
现在d将具有您要查找的内容,您可以通过d.items()或仅d.values()对其进行迭代
答案 1 :(得分:1)
Python包含此问题的最佳数据结构,称为Counter
import collections
colors = ['white','gold','silver','grey','lavender','pink','red','green','blue']
counter = collections.Counter(colors)
print(counter)
结果
Counter({'white': 1, 'gold': 1, 'silver': 1, 'grey': 1, 'lavender': 1, 'pink': 1, 'red': 1, 'green': 1, 'blue': 1})
您可以按名称访问元素
> counter['white']
1
答案 2 :(得分:0)
您可以使用defaultdicts:
from collections import defaultdict
colors_dict = defaultdict(int)
colors = ['white','gold','silver','grey','lavender','pink','red','green','blue']
wordList = ['lavender','gold','silver','waka','lavender','lavender']
for word in wordList:
if word in colors:
colors_dict[word] += 1
print(colors_dict)
defaultdict(<class 'int'>, {'silver': 1, 'lavender': 3, 'gold': 1})