У меня есть этот словарь:Pythonic способ найти и заменить словарь списков
dic = {
'foo': ['one', 'two', 'three'],
'bar': ['four', 'five', 'six'],
'baz': ['seven', 'eight', 'nine']
}
и из этого списка:
my_list = ['one', 'five', 'nine']
Я хочу найти соответствующий ключ в словаре в порядке чтобы получить этот новый список:
['foo', 'bar', 'baz']
Мой фактический рабочий код:
l = []
for el in my_list:
for d_key, d_val in dic.items():
if el in d_val:
l.append(d_key)
print(l)
Но я думаю, что есть более путинский путь. Есть идеи?
редактировать:
Благодаря предложению TigerhawkT3 в (читаемость считает, но практичность бьет чистоту), я выбрал реверс моего словаря, чтобы непосредственно получить значение. Теперь мой код выглядит следующим образом:
dic = {'one': 'foo', 'two': 'foo', 'three': 'foo', 'four': 'bar', 'five': 'bar', 'six': 'bar', 'seven': 'baz', 'nine': 'baz', 'eight': 'baz'}
my_list = ['one', 'five', 'nine']
print([dic[x] for x in my_list])
Вы отрываясь значения, чтобы получить ключ. Это противоположность предполагаемому использованию словарей. – TigerhawkT3
@ TigerhawkT3 Я не уверен, что это правильный дубликат, потому что и значение dict, и «my_list» - это список. – styvane
Если есть несколько терминов для поиска, просто переверните их. «Вы можете поместить это в цикл, чтобы повторить его» не добавляет ничего сложного или уникального - методы в связанном вопросе могут быть легко применены к этой задаче. – TigerhawkT3