Я пытаюсь написать собственный метод фильтрации, который принимает произвольное число kwargs и возвращает список, содержащий элементы списка, подобного базе данных, которые содержат те kwargs.Python: проверьте, является ли один словарь подмножеством другого более крупного словаря
Например, d1 = {'a':'2', 'b':'3'}
и d2
= то же самое. d1 == d2
Результаты True. Но предположим, что d2
= то же самое плюс куча других вещей. Мой метод должен быть способен определить, есть ли d1 в d2, но Python не может делать это со словарями.
Контекст:
У меня есть класс Слово, и каждый объект имеет свойства, как word
, definition
, part_of_speech
, и так далее. Я хочу иметь возможность вызвать метод фильтрации в основном списке этих слов, например Word.objects.filter(word='jump', part_of_speech='verb-intransitive')
. Я не могу понять, как управлять этими ключами и значениями одновременно. Но это может иметь большую функциональность вне этого контекста для других людей.
Если значения Dict являются hashable, используя viewitems() является наиболее optimizied способом я могу думать:.' D1.viewitems() <= d2.viewitems() 'пробеги Timeit показал более 3-кратное повышение производительности.Если не хешировать, даже использование 'iteritems()' вместо 'items()' приводит к улучшению 1.2x. Это было сделано с использованием Python 2.7. – Chad
я не думаю, что оптимизация должна быть оставлена читатель - я обеспокоен тем, что люди на самом деле используют это, не понимая, что он собирается создать копию superset.items() и перебирать ее для каждого элемента в подмножестве. –
@ Chad Это гораздо лучший ответ и на самом деле не является требуют, чтобы элементы были хешируемыми. Я преобразовал это в [ответ wiki сообщества] (http: // st ackoverflow.com/a/41579450). – augurar