簡體   English   中英

如果值是字符串列表,如何在字典中引用值?

[英]How to reference a value in a dictionary if the value is a list of strings?

我從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}]

請注意,“實體”鍵具有第二個字典作為其值。 在第二個字典中,“ hashtags”是鍵,而值是一個hashtags列表。

這是我嘗試收集所有這些標簽的列表以創建頻率序列的代碼:

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無法散列

從字面上看是什么意思; 您不能哈希list對象。 dict使用對象的哈希值查找鍵->值; 這樣更快。

請改用tuple ,以便在返回字符串列表的地方,只需調用tuple(...) 元組是不可變的有序集合,除了不可變和可哈希化外,其行為與列表類似。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM