【问题标题】:how to make dictionary from multiple list containing stream of Reddit comments如何从包含 Reddit 评论流的多个列表中制作字典
【发布时间】:2019-11-02 06:39:18
【问题描述】:

我正在从 reddit 中提取 cmets。我正在尝试在获取时将字符串列表转换为字典。包含语句流的列表,即 cmets 流。不能发布 cmets 它太大; Keyuser 分别是用户名。 c1, c2, c3...c9 包含字符或语句。比如 c1 是 username1 的第一条评论等等。(c1='hello how r u?')

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

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)       

输出应如下所示 打印{用户名1:[[用户1],用户名2:[用户2],用户名:[用户3]]}

打印 { username1:['c1','c2','c3'], username2:['c4','c5','c6'], username3:['c7','c8','c9 '] }

【问题讨论】:

    标签: python list dictionary


    【解决方案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']]}
    

    根据您的使用情况,我认为嵌套 cmets 的值没有任何价值,所以我会这样做

    all_comments=[user1, user2, user3]
    

    然后产生

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

    注意:我猜您可能希望将用户的 cmets 和用户存储在动态数据结构(例如列表或字典)中,而不是为每个用户使用不同的变量。 这将允许您容纳任意数量的用户,而不仅仅是三个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 2021-05-03
      相关资源
      最近更新 更多