使用 python3 更新 JSON 字符串列表时出错



我正在尝试插入另一个datakey:value列表,同时打印/存储在另一个结果中。这是我到目前为止所做的:

>>> data = list()
>>> data.append({'data':'a','name':'alpha'})
>>> data.append({'data':'b','name':'beta'})
>>> data.append({'data':'c','name':'charlie'})
>>> data
[{'data': 'a', 'name': 'alpha'}, {'data': 'b', 'name': 'beta'}, {'data': 'c', 'name': 'charlie'}]
>>> names = []
>>> count = 0
>>> for i in data:
...     names.append(data[count]['name'])
...     count = count + 1
...
>>> names
['alpha', 'beta', 'charlie']
>>> txt = 'alpha'
>>> res = process.extract(txt,names)
>>> res
[('alpha', 100), ('charlie', 33), ('beta', 22)]
>>> for name, score in res:
...     print(data[names.index(name)])
...
{'data': 'a', 'name': 'alpha'}
{'data': 'c', 'name': 'charlie'}
{'data': 'b', 'name': 'beta'}
>>> for name, score in res:
...     print(data[names.index(name)]['score'] = score)
...
File "<stdin>", line 2
SyntaxError: keyword can't be an expression

请告诉我我需要做什么,这样做我会得到带有附加key:value的结果.我正在尝试获得这样的输出:

{'data': 'a', 'name': 'alpha', 'score': 100}
{'data': 'c', 'name': 'charlie', 'score': 33}
{'data': 'b', 'name': 'beta', 'score': 22}

在 Python 中,赋值(此处data[names.index(name)]['score'] = score(是一个语句,因此您不能在需要表达式的地方使用它。你必须首先做作业,然后打印结果,即替换这个:

for name, score in res:
print(data[names.index(name)]['score'] = score)

跟:

for name, score in res:
index = names.index(name)
data[index]['score'] = score
print data[index]

作为旁注:

names = []
count = 0
for i in data:
names.append(data[count]['name'])
count = count + 1

是一种非常复杂的写作方式:

names = [item["name"] for item in data]

替换

for name, score in res:
print(data[names.index(name)]['score'] = score)

for name, score in res:
for d in data:
if d['name']==name:
d['score'] = score

尽管使用类可能是更好的方法。

最新更新