Задать вопрос
@Stigliz777

Как выбрать нужные элементы во вложенных словарями Python?

Всем привет, друзья
Я все эксперементирую с API контакта)
Скачиваю посты из группы для анализа данных. Например я получил словарь с такими постами:
Вот залил json на pastebin https://pastebin.com/HnReC414

Я получаю и добавляю в новый словарь следующие данные:
posts = otvet_json["response"]['items']         #   Сохраняем в переменную все посты
all_posts = []  # Подготовили пустой список для сохранения туда всех данных
filtered_data = []     # Подготовили пустой список для сохранения туда всех отфильтрованных данных
for posts in all_posts:
        id = posts["id"]
        date = time.ctime(posts["date"])
        linuxe_date = posts["date"]
        text = posts["text"]
        likes = posts["likes"]["count"]
        comments = posts["comments"]["count"]
        reposts = posts["reposts"]["count"]
        views = posts["views"]["count"]
        marked_as_ads = posts["marked_as_ads"]
       


        filtered_posts = {
                "id": id,
                "date" : date,          #   Создаем ключ date и записываем туда значение из переменной date
                "linuxe_date" : linuxe_date,            #   Создаем ключ linuxe_date и записываем туда значение из переменной linuxe_date
                "text" : text,          #   Создаем ключ text и записываем туда значение из переменной text
                "likes" : likes,        #   Создаем ключ likes и записываем туда значение из переменной likes
                "comments" : comments,          #   Создаем ключ comments и записываем туда значение из переменной comments
                "reposts" : reposts,          #   Создаем ключ reposts и записываем туда значение из переменной reposts
                "views" : views,          #   Создаем ключ views и записываем туда значение из переменной views
                "marked_as_ads" : marked_as_ads,          #   Создаем ключ marked_as_ads и записываем туда значение из переменной marked_as_ads


        }
        filtered_data.append(filtered_posts)


Как вычленить все photo из всех постов макимального размера, т.е. "type": "x" и потом все это добавить в filtered_data ?

Полагаю что алгоритм должен быть примерно такой:
try:
                attachments = posts["attachments"]
                for att1 in attachments:
                        if att1["type"] == "photo":
                                for razmerphoto in att1:
                                        if razmerphoto["photo"]["sizes"]["type"] == "x":
																Дальше не знаю как правильно прописать.....
        except:
                attachments = "netu"


Также, пока для меня не понятно, как отсеять рекламные посты? Некоторые посты имеют атрибут "marked_as_ads": 1 Т.е. нужно как-то сделать алгоритм, чтобы если "marked_as_ads": 1, то весь этот пост сразу отсеивался.
Полагаю что алгоритм должен быть примерно такой:
for posts in all_posts:
        if pppposts["marked_as_ads"] == 1:
                del posts

Заранее большое спасибо, друзья.
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
@o5a
Как вычленить все photo из всех постов макимального размера, т.е. "type": "x" и потом все это добавить в filtered_data ?

Взять последний размер. Примерно так
max_photos = [att["photo"]["sizes"][-1]["url"] for att in posts["attachments"] if att["type"] == "photo"]


Также, пока для меня не понятно, как отсеять рекламные посты? Некоторые посты имеют атрибут "marked_as_ads": 1

Лучше не удалять, а просто фильтровать свой цикл (пропускать данные посты в своем цикле).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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