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

Я использовал добавление словаря, функцию обновления и понимание словаря, но показываю только один последний комментарий, сделанный каждым пользователем. (пожалуйста, расскажите, как получить все комментарии в 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 {username1: ['c1', 'c2', 'c3'], username2: ['c4', 'c5', 'c6'], username3: ['c7', 'c8', 'c9']}

2
SKB 2 Ноя 2019 в 09:39

1 ответ

Лучший ответ

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

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']}

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

1
Pynchia 2 Ноя 2019 в 11:05