Python 2.7字典值不接受浮点数作为输入



我正在使用Python 2.7并试图插入一个值,这是一个浮点数到一个键。但是,所有的值都以0.0的形式插入。极性值被插入为0.0,而不是实际值。

代码片段:

from textblob import TextBlob
import json
with open('new-webmd-answer.json') as data_file:
data = json.load(data_file, strict=False)
data_new = {}
lst = []
for d in data:
   string =  d["answerContent"]
   blob = TextBlob(string)
#print blob
#print blob.sentiment
#print d["questionId"]
   data_new['questionId'] = d["questionId"]
   data_new['answerMemberId'] = d["answerMemberId"]
   string1 = str(blob.sentiment.polarity)
   print string1
   data_new['polarity'] = string1
#print blob.sentiment.polarity
   lst.append((data_new))


json_data = json.dumps(lst)
#print json_data
with open('polarity.json', 'w') as outfile:
   json.dump(json_data, outfile)

当前编写代码的方式是,每次迭代都覆盖字典。然后将该字典多次追加到列表中。

假设你的字典是dict = {"a" : 1}然后你把它附加到一个列表

alist.append(dict)
alist

[{'a': 1}]

然后你改变dict的值,dict{"a" : 0}并再次将其附加到列表alist.append(dict)

alist

[{'a': 0}, {'a': 0}]

这是因为字典是可变的。有关可变和不可变对象的更完整概述,请参阅此处的文档

要实现预期的输出,每次迭代data

创建一个新字典。
lst = []
for d in data:
    data_new = {} # makes a new dictionary with each iteration
    string = d["answerContent"]
    blob = TextBlob(string)
    # print blob
    # print blob.sentiment
    # print d["questionId"]
    data_new['questionId'] = d["questionId"]
    data_new['answerMemberId'] = d["answerMemberId"]
    string1 = str(blob.sentiment.polarity)
    print string1
    data_new['polarity'] = string1
    # print blob.sentiment.polarity
    lst.append((data_new))

最新更新