我正在尝试将评论列表返回给Facebook帖子。在某些情况下,评论本身也有回复,这些回复位于JSON中的嵌套列表中,我将其视为“commentraw”。我不想只返回JSON所在的原始数据和格式,因为在某些情况下我会进行转换或重组。我认为评论和回复的数据格式是相同的,但回复并不总是出现。无论如何,要做到这一点,我已经提出了这个功能:
def get_post_comments(commentraw, graphsession):
graph=graphsession
commentlist=[]
i=0
while(i<len(commentraw['data'])):
entry={'id': commentraw['data'][i]['id'], 'created_time': convert_date(commentraw['data'][i]['created_time']), 'message': commentraw['data'][i]['message']}
replyraw=graph.get_connections(id=commentraw['data'][i]['id'], connection_name='comments', summary=True)
if replyraw['data']:#if theres replies to the comment on the post, do a nested while (yuck) to also grab and format the replies - this is probably insanely inefficient
y=0
replylist=[]
while(y<len(replyraw['data'])):
subentry={'created_time': convert_date(replyraw['data'][y]['created_time']), 'id': replyraw['data'][y]['id'], 'message': replyraw['data'][y]['message'], 'from': replyraw['data'][y]['from']}
replylist.append(subentry)
y=y+1
entry['replies']=replylist
commentlist.append(entry)
i=i+1
return commentlist
所以基本上因为这是一个带有N个注释或回复列表的JSON输入,我使用while循环并递增以确保迭代列表中的所有项目。但是,因为对注释的回复嵌入在JSON中,所以我必须在while循环中嵌入一个while循环来迭代所有潜在的数据。
Facebook可能拥有大量数据。我的解决方案效率有多低(即循环时嵌套)?我怀疑这里可能会有递归,但我是一名新手Python编码器。