无法在python中的字典中存储非字符文本

时间:2018-06-13 10:52:41

标签: python sentiment-analysis

我正在尝试使用

等数据进行情绪分析
  • source_text - > @LiesbethHBC我有一种很好的感觉,实际上ðŸ™不长,很快就会出现!\ n你应该得到这些票吗? 然后! DY” -

  • result_value - > 情绪(极性= 0.0,主观性= 0.0)

我想将这个键值对存储在python词典中。

我尝试创建一个:

dict={}

dict[source_text].append(result_value)

但我得KeyError 有没有办法在字典中存储这样的文本(只是不是字符)?

3 个答案:

答案 0 :(得分:0)

您的问题与"非字符文字"无关。 (实际上并不代表任何东西),对象可用作字典键的唯一要求是它可以清洗,并且对于可以用作值的内容绝对没有限制。

你的问题很简单,因为你正试图获得一个不存在的密钥的价值(KeyError意味着什么:你要求的密钥不存在于字典)。

这里:

mydict = {}

此时,mydict为空,因此任何商品访问都会引发KeyError

然后你这样做了:

dict[source_text].append(result_value)

基本上是:

something = mydict[source_text] # get value for key `source_text`
something.append(result_value)

由于你的dict是空的,第一行显然会引发KeyError

如果您想为每个result_value值存储一个唯一的source_text,那么正确的语法是:

mydict[source_text] = result_value

如果要为每个result_value值存储source_text列表,则必须明确测试密钥是否已设置,如果未设置为空列表,则附加到此列表:

if source_text not in mydict:
    mydict[source_text] = []
mydict[source_text].append(result_value)

或仅使用DefaultDict代替:

from collections import DefaultDict
mydict = DefaultDict(list)
# DefaultDict will automagically create the key with an empty list
# as value if the key is missing
mydict[source_text].append(result_value)

现在我强烈建议您花一些时间来正确学习Python(提示:官方文档中有相当不错的教程)如果你必须使用它,这将节省每个人的时间。

答案 1 :(得分:0)

问题是,当你试图拔出字典中的密钥@LiesbethHBC I have a good feeling actually 🙈 its not that long, it's pretty soon!\nAw you deserve these tickets then! 💖时,在这种情况下不存在,Python给你一个KeyError意味着密钥不存在于词典。解决这个问题的一个简单方法是首先检查字典中是否有特定的键,如果是的话,做你想做的任何事情,否则先创建那个键。

顺便说一句,避免使用dict(字典数据类型)或任何其他数据类型作为变量名。

这是你应该做的事情:

dictionary = {}  # Since, 'dict' is the dictionary data-type in Python

if (source_text in dictionary):
    # If the key exists...
    dictionary[source_text].append(result_value)

else:
    # If the key does not exist...
    dictionary[source_text] = []

这应该有帮助...

答案 2 :(得分:-1)

您是否尝试使用'.update'方法?

dict = {}
dict.update({'First':'Test'})
dict.update({'Lets Get':'Real'})
print (dict)

输出:

{'Testing': 'Dictionaries', 'Lets Get': 'Real'}

编辑: 甚至:

dict = {}
dict.update({'Polarity':0.91})
dict.update({'Subjectivity':0.73})
print (dict)

输出:

{'Polarity': 0.8, 'Subjectivity': 0.73}