Squeak.ru - шаблоны программирования

python – как сравнить ключ словаря со строковым символом

Я новичок в python, и мне нужно сравнить символ в строке с ключом в словаре. Но я не могу найти способ сравнить этот символ с ключом. Я могу сравнить его только со значением в dict[key]

Я пытаюсь реализовать что-то вроде этого:

score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
     "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
     "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
     "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
     "x": 8, "z": 10}

def compare(word):
   res = 0
   for letter in word:
       if score[**What should i put in here**] == letter:
          res += score[letter]
   return res

где score[key] представляет значение этого конкретного ключа в целом. Есть ли способ сравнить ключ с буквой, а не со значением?

Моя цель - сравнить «букву» в «слове» с ключами в словаре, добавить значения к символам и вернуть результат.

23.02.2015

  • Вы пытаетесь проверить, принадлежит ли буква словарю в качестве ключа? 23.02.2015
  • Должен ли dict быть score...? 23.02.2015

Ответы:


1

Похоже, вы думаете об этом странно. Все, что вам нужно сделать, это проверить, есть ли буква в вашем score dict, и если да, то добавить это число к общему количеству.

def compare(word):
    res = 0
    for letter in word:
        if letter in score:
            res += score[letter]
    return res

Однако есть более простой способ сделать это. Поскольку вы просто используете res в качестве аккумулятора, вы можете добавить score[letter], если он существует, или 0, если его нет. Это легко сделать с помощью метода dict.get.

def compare(word):
    res = 0
    for letter in word:
        res += score.get(letter, 0)
        # dict.get(key, defaultvalue)
    return res

На самом деле вы даже можете превратить его в уродливого lambda.

compare = lambda word: sum([scores.get(letter,0) for letter in word])
23.02.2015

2
score = {"a": 1, ...}

def compare(word):
   res = 0
   for letter in word:
       if letter in score:
           res += score[letter]
   return res

Это, вероятно, то, что вы хотите. Вы даже можете опустить if letter in score, если уверены, что все ваши буквы будут в score. Вам не нужно ничего сравнивать.

23.02.2015

3

Как указал другой ответ Адама, вы думаете об этом странным образом. НЕТ способа получить ключ оценки словаря, используя что-то вроде score['*get_me_the_key*'].

Если тебе действительно нужны ключи. score.keys() даст вам список ключей в словаре. Что-то вроде этого:

keys = score.keys()
print keys
['a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h', 'k', 'j', 'm', 'l', 'o', 'n', 'q', 'p', 's', 'r', 'u', 't', 'w', 'v', 'y', 'x', 'z']
23.02.2015

4

Я узнаю эту проблему в курсе Codecademy: Python. В задаче, которую вы решаете, вы должны добавить word = word.lower() в начале функции. В противном случае, если вы будете проверять слова, содержащие заглавные буквы, программа выдаст ошибки. Другими словами, "D" в словаре нет, а "d" есть. Надеюсь это поможет.

06.07.2017

5
dict = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
 "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
 "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
 "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
 "x": 8, "z": 10}

def compare(word):

res = 0

for letter in word:

   if letter in dict:

      res += dict['letter']

return res

пример:

dict['c']

получить соответствующее значение 3

23.02.2015
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...