Словарь ключей соответствует по списку; получить пару ключ/значение
В python... У меня есть список элементов 'my_list' и словарь 'my_dict', где некоторые ключи совпадают в 'my_list'.
Я бы хотел найти словарь и получить пары ключ/значение для ключей, соответствующих элементам "my_list".
Я пробовал это...
if any(x in my_dict for x in my_list):
print set(my_list)&set(my_dict)
Но это не делает работу.
Ответы
Ответ 1
(Я переименовал list
в my_list
и dict
в my_dict
, чтобы избежать конфликта с именами типов.)
Для повышения производительности вы должны перебирать список и проверять наличие членства в словаре:
for k in my_list:
if k in my_dict:
print k, my_dict[k]
Если вы хотите создать новый словарь из этих пар ключ-значение, используйте
new_dict = {k: my_dict[k] for k in my_list if k in my_dict}
Ответ 2
Не используйте dict
и list
как имена переменных. Они скрывают встроенные функции. Предполагая список l
и словарь d
:
kv = [(k, d[k]) for k in l if k in d]
Ответ 3
new_dict = dict((k, v) for k, v in dict.iteritems() if k in list)
Переключение списка в набор set(list)
может привести к заметному увеличению скорости
Ответ 4
Как насчет print([kv for kv in dict.items() if kv[0] in list])
Ответ 5
Попробуйте следующее:
mydict = {'one': 1, 'two': 2, 'three': 3}
mykeys = ['three', 'one','ten']
newList={k:mydict[k] for k in mykeys if k in mydict}
print newList
{'three': 3, 'one': 1}
Ответ 6
Вот однострочное решение для этого
{i:my_dict[i] for i in set(my_dict.keys()).intersection(set(my_list))}