If-else в понимании списка python с использованием словаря

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

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

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']

"не работает" - это не описание

Sayse 25.04.2019 14:39
print([contractions[i] if i in contractions else i for i in abc]) ?
Rakesh 25.04.2019 14:41

Каков ожидаемый результат?

Devesh Kumar Singh 25.04.2019 14:41

@Sayse, только что исправил

Shoaibkhanz 25.04.2019 14:41

@DeveshKumarSingh, только что добавил

Shoaibkhanz 25.04.2019 14:43

Отлично, добавил ответ, пожалуйста, проверьте @Shoaibkhanz

Devesh Kumar Singh 25.04.2019 15:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
6
137
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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']

Вы используете понимание списка, нигде не используя его значения, это плохая практика.

Devesh Kumar Singh 25.04.2019 14:48
Ответ принят как подходящий

Используйте значение из ключа, если слово существует в словаре, иначе используйте само слово, используя 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)

Другие вопросы по теме

Похожие вопросы