[英]Better Way to Check if Values are in a List?
我有以下代码遍历单词列表,并递增表示颜色的变量,如下所示:
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
我觉得必须有更好的方法来执行此操作,但是我不确定它是什么。 谢谢。
我认为您正在寻找的是Counter
。 它返回带有名称和数字出现的字典
from collections import Counter
d = Counter(wordList)
现在d将具有您要查找的内容,您可以通过d.items()或仅使用d.values()对其进行迭代。
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
您可以使用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})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.