if-else в понимании списка python с использованием словаря - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь заменить слово от сокращения.Тем не менее, я хочу вернуть слово, если оно не существует в сокращении, но оно есть в списке.

В настоящее время моя реализация не выполняется, если слово в списке не существует в словаре.

contractions = {
"costumer": "customer",
"billl": "bill",
"acct": "account"}
abc = ['acct','costumer','abc']

[w.replace(w,contractions[w]) for w in abc if w in contractions else w for w in abc]

ожидаемый результат: ['account','customer','abc']

Ответы [ 3 ]

4 голосов
/ 25 апреля 2019

Используйте значение из ключа, если слово существует в словаре, иначе используйте само слово, используя dict.get(key,default_value)

contractions.get(word,word), получает значение для ключа word из contractions, если ключприсутствует, иначе оно использует само слово `

contractions = {
"costumer": "customer",
"billl": "bill",
"acct": "account"}
abc = ['acct','costumer','abc']

res = [contractions.get(word,word)  for word in abc]
print(res)
#['account', 'customer', 'abc']
1 голос
/ 25 апреля 2019

Вы можете сделать это, если, если хотите, если в правильном положении

contractions = {
"costumer": "customer",
"billl": "bill",
"acct": "account"}
abc = ['acct','costumer','abc']

res=[contractions[w] if w in contractions else w for w in abc]

print(res)

но у dict также есть удобный метод для этого

res=[contractions.get(w,w) for w in abc]

print(res)
1 голос
/ 25 апреля 2019
contractions = {
"costumer": "customer",
"billl": "bill",
"acct": "account"}
abc = ['acct','costumer','abc']

[w.replace(w,contractions[w]) if w in contractions else w for w in abc ]

Дает вам:

['account', 'customer', 'abc']
...