Я читаю в файле твитов, которые я скачал с общего диска:
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'])
Вот где я нахожуhashtags:
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'
Теперь я не уверен, почему это не такне работает, если я могу просто распечатать хэштеги подобным образом, любая помощь, пожалуйста?