Значения словаря отображаются неправильно при обходе в документе MongoDB - PullRequest
0 голосов
/ 27 августа 2018

Я считаю количество похожих значений в документе MongoDB следующего типа.

{
   "_id" : ObjectId("5b7fa2a745d12b10324d3a01"),
   "date_time" : "24, Aug 2018 11:44",
   "original_query" : "sanjeevnewar",
   "posts" : [ 
       {
        "full_story" : "https://m.facebook.com//story.php?story_fbid=10156903788391742&id=590746741&refid=17",
        "love" : {
            "total" : "1",
            "reactors" : [ 
                {
                    "profile" : "https://m.facebook.com//amrit2100",
                    "name" : "Amrit Kumar Deb",
                    "fb_id" : "100002204201460"
                }
            ]
        },
        "like" : {
            "total" : "65",
            "reactors" : [ 
                {
                    "profile" : "https://m.facebook.com//profile.php?id=100026633915502",
                    "name" : "Kamlesh Yadav",
                    "fb_id" : "100026633915502"
                },
              }
          ]
       },

Это соответствует нескольким подобным записям для разных fb_ids.

И моя реализация -

  result = db.post.find()
  list_of_reactor_ids = []

Я использовал Счетчик для накопительного обновления значений

  dict_of_reactor_ids = Counter()
  sorted_dict_of_reactor_ids = {}
  okey={}
  for doc in result:
      for post in doc['posts']:
          if 'like' in post:
              value = 1

Я добавляю соответствующие fb_ids с их значениями, а затем сортирую их

         for reactor in post['like']['reactors']:
            dict_of_reactor_ids.update({reactor['fb_id']: value})

         sorted_dict_of_reactor_ids = sorted(dict_of_reactor_ids.items(),
                                    key=lambda dict_of_reactor_ids: dict_of_reactor_ids[1], reverse=True)

         if 'fb_id' in doc:
    okey.update({doc['fb_id']: sorted_dict_of_reactor_ids})
pprint.pprint(okey)

Я получаю вывод, но пары значений ключа не соответствуют фактическим парам значений ключа, некоторые являются действительными, а некоторые из других записей значения ключа, например, 2-е значение в следующем выводе фактически соответствует другому ключу, но его там присутствует в первой записи. Выдержка из вывода, который я получаю -

     {'100000107208292': [('100013453489456', 16),
                 ('100009112778707', 14),
                 ('100011123838353', 14),
     '100000990054613': [('100013633776676', 7),
                 ('100010228383344', 7),
                 ('100010068034206', 7),
                 ('100013210631871', 6),
                 ('100014734173448', 5),
                 ('100011640376115', 4)
              ]
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...