Как сделать словарь из нескольких списков, содержащих поток комментариев Reddit - PullRequest
2 голосов
/ 02 ноября 2019

Я извлекаю комментарии из reddit. Я пытаюсь преобразовать список строк в словарь при получении. Список, содержащий поток утверждений, т.е. поток комментариев. Не может оставлять комментарии слишком большими;Keyuser это имя пользователя соответственно. c1, c2, c3 ... c9 содержит символы или оператор. Например, c1 - первый комментарий, сделанный username1 и т. Д. (C1 = 'hello how ru?')

Я использовал добавление словаря, функцию обновления и понимание словаря, но показываю только один последний комментарий, сделанный каждым пользователем. (пожалуйста, скажите, как получить все комментарии в dict

res={}  #empty dictionary  
all_comments=[]
name=[]
keyuser=['username1','username2','username3']
all_comments=[[user1],[user2],[user3]] #after fetching comments
user1=['c1','c2','c3']
user2=['c4','c5','c6']
user3=['c7','c8','c9']

#fetching comment like below
 name = keyuser
for i in range(len(name)):
    n=name[i]   
    for comment in  api.search_comments(author=name[i], limit=None):        
            all_comments.append(comment.body)       
    res = { k:v for k,v in zip(n, all_comments[0:])}
print (res)       

ВЫХОД должен быть таким, как показано ниже: print {username1: [[user1], username2: [user2], username: [user3]]}

или

print {имя пользователя1: ['c1', 'c2', 'c3'], имя пользователя2: ['c4', 'c5', 'c6'], имя пользователя3: ['c7', 'c8', 'c9']}

1 Ответ

1 голос
/ 02 ноября 2019

Назначьте имена переменных перед ссылками на них

key=['user1','user2','user3']
user1=['c1','c2','c3']
user2=['c1','c2','c3']
user3=['c1','c2','c3']
all_comments=[[user1],[user2],[user3]]

, затем используйте словарь:

res = { k:v for k,v in zip(key, all_comments)}

Примечание: Python 3 теперь сохраняет порядок вставки в словари (изначально, когдаобновлено, это не гарантируется), как вы можете увидеть, напечатав его:

print(res)

производит

{'user1': [['c1', 'c2', 'c3']], 'user2': [['c1', 'c2', 'c3']], 'user3': [['c1', 'c2', 'c3']]}

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

all_comments=[user1, user2, user3]

, что затем приводит к

{'user1': ['c1', 'c2', 'c3'], 'user2': ['c1', 'c2', 'c3'], 'user3': ['c1', 'c2', 'c3']}

Примечание: я полагаю, вы, возможно, захотите хранить комментарии пользователя и пользователей в динамической структуре данных (например, список или диктовку). ) вместо использования отдельных переменных для каждого пользователя. Это позволит вам разместить любое количество пользователей вместо трех

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...