我读到了从共享驱动器下载的推文文件:
lst = list()
with open('cwctweets.txt', 'r', encoding = 'utf8') as infile:
txt = infile.readlines()
把它变成了一个包含 10 个字典的列表:
for line in txt:
dct = dict(line)
lst.append(dct)
我认为每本词典都有 15 条推文,除了第一个lst[0]有 100 条推文。
我要做的是创建一个字典,其中包含主题标签作为键,主题标签的计数作为值。
所有字典 (0-9) 如下所示:
lst[0].keys()
dict_keys(['search_metadata', 'statuses'])
而且我只关注“状态”:
lst[0]['statuses'][1].keys()
dict_keys(['geo', 'entities', 'in_reply_to_user_id_str', 'favorite_count', 'retweeted', 'id', 'place', 'source', 'text', 'in_reply_to_user_id', 'favorited', 'id_str', 'lang', 'truncated', 'contributors', 'created_at', 'metadata', 'retweet_count', 'in_reply_to_status_id_str', 'coordinates', 'in_reply_to_screen_name', 'user', 'in_reply_to_status_id'])
这是我找到主题标签的地方:
lst[0]['statuses'][1]['entities'].keys()
dict_keys(['user_mentions', 'hashtags', 'urls', 'symbols'])
所以我可以这样做来打印出主题标签:
for a in lst:
for b in a['statuses']:
print(b['entities']['hashtags'])
我的输出如下所示:
[{'indices': [47, 56], 'text': 'WorldCup'},
{'indices': [57, 63], 'text': 'CWC15'}, {'indices':
[64, 72], 'text': 'IndvsSA'}]
[{'indices': [107, 113], 'text': 'CWC15'},
{'indices': [114, 122], 'text': 'NZvsENG'},
{'indices': [123, 134], 'text': 'Contenders'}]
...
但是,当我尝试创建一个以主题标签为键且主题标签计为值的字典时:
dct1 = dict()
for a in lst:
for b in a['statuses']:
if b['entities']['hashtags'] not in dct1:
dct1[b] = 1
else:
dct1[b] += 1
这是我得到的错误:
TypeError Traceback (most recent call last)
<ipython-input-129-cc2e453c6f6d> in <module>()
2 for a in lst:
3 for b in a['statuses']:
----> 4 if b['entities']['hashtags'] not in dct1:
5 dct1[b] = 1
6 else:
TypeError: unhashable type: 'list'
现在我不确定如果我可以以类似的方式打印出主题标签,为什么它不起作用,请帮忙?