Ключи словаря совпадают в списке; получить пару ключ / значение
в 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)
но это не делает работу.
6 ответов
(после переименования list
to 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}
не используйте dict
и list
в качестве имен переменных. Они затеняют встроенные функции. Предполагая, что список l
словарь d
:
kv = [(k, d[k]) for k in l if k in d]
new_dict = dict((k, v) for k, v in dict.iteritems() if k in list)
превращение списка в набор set(list)
мая выход заметное увеличение скорости
Попробуйте Это:
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}
вот решение одной строки для этого
{i:my_dict[i] for i in set(my_dict.keys()).intersection(set(my_list))}