我正在从 Twitter 收集数据,每条推文都采用字典的形式。
我的完整数据集是数千条推文的列表(字典列表)。
我想在每条推文中引用主题标签,但我需要帮助弄清楚如何做到这一点。
以下是包含相关数据的两条部分推文的列表示例:
twitter_tweets =
[{'created_at': 'Wed Oct 18 22:20:30 +0000 2017', 'id': 920776631102214144, 'entities': {'hashtags': ['#dataanalyst#', '#politics']} 'user': {'id': 119116331, 'statuses_count': 32796, 'verified': False, 'lang': 'en-'}, 'retweet_count': 0, 'favorite_count': 0}
{'created_at': 'Wed Oct 17 12:20:36 +0000 2017', 'id': 920776631106514144, 'entities': {'hashtags': ['#california', '#nationalparks']} 'user': {'id': 119159331, 'statuses_count': 32796, 'verified': False, 'lang': 'en-gb'}, 'retweet_count': 1, 'favorite_count': 2}]
请注意,“entities”键的值是第二个字典。在第二个字典中,“主题标签”是键,值是主题标签列表。
这是我尝试收集所有这些主题标签的列表以创建频率系列的代码:
def make_tweets_series(input_list, first_key, second_key):
final_keys_list = []
for line in input_list:
tweets_by_key = line[first_key][second_key]
final_keys_list.append(tweets_by_key)
series_key_values = pd.Series(final_keys_list).value_counts()
return series_key_values
hashtag_distribution_series = make_tweets_series(twitter_tweets, 'entities', 'hashtags')
我认为,如果“hashtags”值是一个字符串,则该代码可以工作,但它不起作用,因为“hashtags”是一个字符串列表。
如何引用这些列表中的每个主题标签并将它们放入一个系列中?
我的完整错误消息(带有回溯)如下:
Traceback (most recent call last):
File "<ipython-input-60-7623feb35c84>", line 13, in <module>
hashtag_distribution_series = make_tweets_series(twitter_tweets, 'entities', 'hashtags')
File "<ipython-input-60-7623feb35c84>", line 6, in make_tweets_series
series_key_values = pd.Series(final_keys_list).value_counts()
File "/home/tommy/anaconda3/lib/python3.6/site-packages/pandas/core/base.py", line 938, in value_counts
normalize=normalize, bins=bins, dropna=dropna)
File "/home/tommy/anaconda3/lib/python3.6/site-packages/pandas/core/algorithms.py", line 640, in value_counts
keys, counts = _value_counts_arraylike(values, dropna)
File "/home/tommy/anaconda3/lib/python3.6/site-packages/pandas/core/algorithms.py", line 685, in _value_counts_arraylike
keys, counts = f(values, dropna)
File "pandas/_libs/hashtable_func_helper.pxi", line 356, in pandas._libs.hashtable.value_count_object (pandas/_libs/hashtable.c:29440)
File "pandas/_libs/hashtable_func_helper.pxi", line 367, in pandas._libs.hashtable.value_count_object (pandas/_libs/hashtable.c:29189)
TypeError: unhashable type: 'list'
最佳答案
列表
不可散列
字面意思;您无法对 list
对象进行哈希处理。 dict
s 使用对象的哈希值来查找 key -> value;这样会更快。
改用tuple
,这样在返回字符串列表的地方,只需调用tuple(...)
。元组是不可变的有序集合,其行为与列表类似,但不可变且可散列。
关于python - 如果值是字符串列表,如何引用字典中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46964917/