Лучший способ проверить, есть ли значения в списке? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть следующий код, который просматривает список слов и увеличивает переменные, представляющие цвета следующим образом:

  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

Я чувствую, что должен быть лучший способ сделать это, но я неуверен, что это такое.Спасибо.

Ответы [ 3 ]

1 голос
/ 07 июня 2019

Я думаю, что вы ищете Counter.который возвращает словарь с именами и числами

from collections import Counter
d = Counter(wordList)

Теперь у d будет то, что вы ищете, и вы можете перебирать его, используя d.items () или просто d.values ​​()

1 голос
/ 07 июня 2019

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
0 голосов
/ 07 июня 2019

Вы можете использовать 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})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...