#python #list #dictionary
Вопрос:
У меня есть список слов
words = ['apple', 'peach', 'tomato']
И словарь
translations = {'apple':' apfel', 'banana': 'banane', 'peach': 'pfirsich', 'orange': 'apfelsine'}
Мне нужно найти все слова, соответствующие ключам в словаре, заменить отсутствующие чем-то вроде <none>
и поместить все это в новый список. То есть результат должен быть следующим:
result = ['apfel', 'pfirsich', '<none>']
Список и словарь могут содержать более 10 000 элементов, если это важно.
Комментарии:
1.
result = [translations.get(k, '<none>') for k in words]
. Однако не используйтеlist
иdict
в качестве имен переменных, так как они будут затенять исходные встроенные модули с тем же именем.2. что ты пробовал? поделитесь кодом, пожалуйста.
Ответ №1:
words = ['apple', 'peach', 'tomato']
translations = {'apple':' apfel', 'banana': 'banane', 'peach': 'pfirsich', 'orange': 'apfelsine'}
Одним из способов сделать это может быть простое повторение с помощью метода .items (), который возвращает словарь как содержащий пары «ключ-значение» словаря, но в виде кортежей в списке.
Таким образом, вы можете перебирать и рассматривать его, например, как список:
result = []
#k,v refers to our key-value pairs in our dictionary
for k,v in translations.items():
# checks if key is in our list
if k in words:
# appends the value onto the list
result.append(v)
else:
# appends alternative value
result.append("<none>")
print(result)
Альтернативно и мое личное любимое, поскольку его можно использовать повторно,-это поместить его в определение..
#lst is the list, dct is the dictionary
def multi_dict(lst, dct):
result = []
for k,v in dct.items():
if k in words:
# appends the value onto the list
result.append(v)
else:
# appends alternative value
result.append("<none>")
return result
print(multi_dict(words, translations))
В любом случае это должно позволить вам перебрать 10 000 элементов или более.
Ответ №2:
попробуйте это:
words = ['apple','peach','tomato']
translations = {'apple':'apfel','banana':'banane','peach':'pfirsich','orange':'apfelsine'}
result = [translations.get(i, '<none>') for i in words]
#['apfel', 'pfirsich', '<none>']