如何从包含Reddit评论流的多个列表制作字典

时间:2019-11-02 06:39:18

标签: python list dictionary

我正在从reddit中提取评论。我正在尝试在提取时将字符串列表转换为字典。包含陈述流的列表,即评论流。不能发表评论太大; Keyuser分别是用户名。 c1,c2,c3 ... c9包含字符或语句。就像c1是用户名1所做的第一条评论,依此类推。(c1 ='你好,你如何?')

我使用过字典附加,更新功能和字典理解功能,但只显示每个用户发表的最后一条评论。( 请告诉我们如何在字典中获取所有评论

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)       

输出应如下所示 打印{username1:[[user1],username2:[user2],username:[user3]]}

print {用户名1:['c1','c2','c3'],用户名2:['c4','c5','c6'],用户名3:['c7','c8','c9 ']}

1 个答案:

答案 0 :(得分: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']}

注意:我想您可能希望将用户的评论和用户存储在动态数据结构(例如列表或dict)中,而不是为每个用户使用不同的变量。 这样一来,您便可以容纳任意数量的用户,而不仅仅是三个用户