Я пытаюсь заменить слово из словаря сокращений. Однако я хочу вернуть слово, когда оно не существует в сокращенном словаре, но есть в списке.
В настоящее время моя реализация дает сбой, если слово в списке не существует в словаре.
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']
print([contractions[i] if i in contractions else i for i in abc]) ?
Каков ожидаемый результат?
@Sayse, только что исправил
@DeveshKumarSingh, только что добавил
Отлично, добавил ответ, пожалуйста, проверьте @Shoaibkhanz






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']
Вы используете понимание списка, нигде не используя его значения, это плохая практика.
Используйте значение из ключа, если слово существует в словаре, иначе используйте само слово, используя 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']
Вы можете сделать это с помощью if, когда вам угодно, если в правильном положении
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)
"не работает" - это не описание