Работа со словарями Python - PullRequest
0 голосов
/ 24 марта 2012

Я пишу функцию, которая принимает аргумент.Исходя из этого аргумента, я хочу сравнить его с набором ключей словаря и вернуть значение ключа для любых совпадений.До сих пор я мог только возвращать совпадения аргументов для ключей.

def func(str):
  a = []
  b = {'a':'b','c':'d','e':'f'}
  for i in str:
    if i in b.keys():
      a.append(i)
  return a

Пример вывода:

func ('abcdefghiabcdefghi')

['a', 'c', 'e', ​​'a', 'c', 'e']

Требуемый вывод:

['b', 'd', 'f', 'б», 'd', 'е']

1 Ответ

2 голосов
/ 24 марта 2012

Лучше не использовать str в качестве имени переменной. Я думаю, что ваша функция может быть написана более просто, как это

def func(mystr):
  b = {'a':'b','c':'d','e':'f'}
  return [b[k] for k in mystr if k in b]

Если вы не хотите использовать понимание списка, вы можете исправить это следующим образом

def func(mystr):
  a = []
  b = {'a':'b','c':'d','e':'f'}
  for i in mystr:
    if i in b:           # i in b works the same as i in b.keys()
      a.append(b[i])     # look up the key(i) in the dictionary(b) here
  return a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...