我对蟒蛇很陌生。我正在尝试将从twitter返回的tweet列表转换为一个分组列表(按hashtag)。我决定使用还原方法,但我的问题是python不允许我创建基于字符串的键作为属性。
推特
{
created_at: date
id: number
text: string
entities: {
hashtags: []
urls: []
}
}接下来是代码,请注意,首先我做了一个过滤器来删除所有没有哈希标签的tweet,可能这就是将“数组”设置为List的原因。
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)发布于 2021-07-25 14:15:24
而不是r[firstHashtag] or [],做r.get(firstHashtag, [])
当使用方括号语法访问字典中不存在的键时,会引发KeyError。
通过使用get方法,可以通过提供默认值来防止错误。
顺便说一下,您还可以使用defaultdict创建所需的字典:
from collections import defaultdict
result = defaultdict(list)
for tweet in tweetsWithHashtags:
hashtags = tweet['entities']['hashtags']
for ht in hashtags:
result[ht].append(tweet)https://stackoverflow.com/questions/68519062
复制相似问题