我正在从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 ']}
答案 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)中,而不是为每个用户使用不同的变量。 这样一来,您便可以容纳任意数量的用户,而不仅仅是三个用户