首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python的减少方法将tweet分组到它们的hashtag中,错误地用字符串(hashtag的名称)设置数组的键

使用python的减少方法将tweet分组到它们的hashtag中,错误地用字符串(hashtag的名称)设置数组的键
EN

Stack Overflow用户
提问于 2021-07-25 13:31:42
回答 1查看 63关注 0票数 0

我对蟒蛇很陌生。我正在尝试将从twitter返回的tweet列表转换为一个分组列表(按hashtag)。我决定使用还原方法,但我的问题是python不允许我创建基于字符串的键作为属性。

推特

代码语言:javascript
复制
{
 created_at: date
 id: number
 text: string
 entities: {
  hashtags: []
  urls: []
 }
}

接下来是代码,请注意,首先我做了一个过滤器来删除所有没有哈希标签的tweet,可能这就是将“数组”设置为List的原因。

代码语言:javascript
复制
tweets_copy = []
for tweet in tweets:
    tweets_copy.append(tweet._json)

tweetsWithHashtags = filter(lambda tweet: len(tweet['entities']['hashtags']) > 0, tweets_copy)

def groupPostByHashtag(r, a):
    firstHashtag = a['entities']['hashtags'][0]['text']
    r[firstHashtag] = r[firstHashtag] or []   #KeyError: '5200mAh'  this is the hashtag name
    r[firstHashtag].append(a)
    return r

results = reduce(groupPostByHashtag, tweetsWithHashtags, {})
print(results)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-25 14:15:24

而不是r[firstHashtag] or [],做r.get(firstHashtag, [])

当使用方括号语法访问字典中不存在的键时,会引发KeyError

通过使用get方法,可以通过提供默认值来防止错误。

顺便说一下,您还可以使用defaultdict创建所需的字典:

代码语言:javascript
复制
from collections import defaultdict

result = defaultdict(list)
for tweet in tweetsWithHashtags:
    hashtags = tweet['entities']['hashtags']
    for ht in hashtags:
        result[ht].append(tweet)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68519062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档