Фильтрация словарей и создание подсловарей на основе ключей/значений в Python?

Попробуйте PDFMiner. Это может извлечь текст из файлов PDF как HTML, SGML или "Теговый PDF" формат.

Теговый формат PDF, кажется, является самым чистым, и снятие XML-тэгов оставляет просто пустой текст.

А версия Python 3 доступна под:

5
задан Chinmay Kanchi 30 August 2010 в 16:59
поделиться

3 ответа

Вот не очень красивый способ сделать это. Результатом является генератор, но если вам действительно нужен список, вы можете окружить его вызовом list () . По большей части это не имеет значения.

Предикат - это функция, которая определяет для каждой пары ключ / значение, будет ли словарь в списке сокращать ее. По умолчанию принимает все. Если ни одна пара k / v в словаре не соответствует, она отклоняется.

def filter_data(data, predicate=lambda k, v: True):
    for d in data:
         for k, v in d.items():
               if predicate(k, v):
                    yield d


test_data = [{"key1":"value1", "key2":"value2"}, {"key1":"blabla"}, {"key1":"value1", "eh":"uh"}]
list(filter_data(test_data, lambda k, v: k == "key1" and v == "value1"))
# [{'key2': 'value2', 'key1': 'value1'}, {'key1': 'value1', 'eh': 'uh'}]
9
ответ дан 18 December 2019 в 14:49
поделиться

За исключением проблем, уже отмеченных в других комментариях и ответах (несколько одинаковых ключей не могут быть в dict и т. Д.), Вот как я бы это сделал:

def select_sublist(list_of_dicts, **kwargs):
    return [d for d in list_of_dicts 
            if all(d.get(k)==kwargs[k] for k in kwargs)]

subdata = select_sublist(data, key1='value1')
3
ответ дан 18 December 2019 в 14:49
поделиться

Ответ слишком прост, поэтому я думаю, что нам не хватает некоторой информации. В любом случае:

result = []
for datadict in data:
    for key, value in datadict.items():
        thefiltering()

    if datadict.get('matchkey') == 'matchvalue':
        result.append(datadict)

Кроме того, ваш «главный словарь» - это не словарь, а список.

1
ответ дан 18 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: