【问题标题】:searching "key" in a dictionary在字典中搜索“key”
【发布时间】:2021-07-08 01:26:14
【问题描述】:

您将在下面看到一个代码的 sn-p,我在其中创建了一个字典,其中存储了产品评论中的单词。现在,我正在编写一个函数,它将返回字典中出现的单词的出现次数。如果不存在,则返回 0。

(此函数稍后将用于其他目的。正如其中一位成员指出的那样,我可以使用 dict.get() 来提取密钥。但是,当我尝试这样做时,我得到了一个 属性错误:'SArray' 对象没有属性 'get')

谁能指出我可能犯的任何明显错误?

提前致谢。

编辑:

代码如下:

word_list=turicreate.text_analytics.count_words(products['review'])

def selected_w_count(key):
    if key in word_list:
        return word_list[key]
    else:
        return 0

selected_w_count('wise')

output ->> 0

Snapshot of the code

【问题讨论】:

  • 你可以使用默认值dict.get,比如word_list.get('wise', 0),如果键wise不存在,它将返回0,否则返回键的值。跨度>
  • 将代码粘贴为文本而不是图像。
  • 我试图这样做,但它给出了一个“属性错误”:“SArray”对象没有属性“get”
  • @NinadPethkar,然后word_list[0].get('wise', 0)
  • @NinadPethkar 那我不认为SArray 是字典;是吗? (它似乎是一个字典数组。)

标签: python dictionary search key


【解决方案1】:

你在selected_w_count(key)函数中有错字,if key in world_list:应该是if key in word_list:

根据您对 word_list 类型是数组的评论,您可能希望使用 word_list[0].get('wise', 0) 代替函数调用。这将从数组中获取字典并获取默认值为 0 的键 'wise'。

【讨论】:

  • 感谢您指出。我纠正了它,它仍然给出错误的输出。我现在已经更新了原始快照。
  • 只提供存储在 word_list[0] 中的单词 如果我们正在搜索的单词在 word_list[1] 或 word_list[n] 中,那么该方法仍然会返回 "0
  • @NinadPethkar 然后你可以遍历它...?
【解决方案2】:

您的代码似乎返回一个 turicreate.SArray 对象而不是标准的 dict 对象,因此 get 函数不起作用。

我搜索该文档并在以下位置找到它: https://apple.github.io/turicreate/docs/api/generated/turicreate.SArray.html

也许你可以使用函数 turicreate.SArray.dict_trim_by_keys() 来过滤给定的键并使用 turicreate.SArray.dict_values() 来获取值,就像这样:

def selected_w_count(key_word):
    word_list.dict_trim_by_keys([key_word], exclude=False).dict_values() if word_list.dict_trim_by_keys([key_word], exclude=False) else 0

你也可以只提供一个关键词列表,像这样改变它:

def selected_w_count(keywords_list):
    word_list.dict_trim_by_keys(keywords_list, exclude=False).dict_values() if word_list.dict_trim_by_keys(keywords_list, exclude=False) else 0

这些函数的文档在这里: https://apple.github.io/turicreate/docs/api/generated/turicreate.SArray.dict_trim_by_keys.html https://apple.github.io/turicreate/docs/api/generated/turicreate.SArray.dict_values.html

请注意,真正的结果也会返回列表类型的 SArray 而不仅仅是数字。

不确定是否有效,希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多