使用python3更新json字符串列表时出错
在打印/存储另一个结果时,我试图插入另一个使用python3更新json字符串列表时出错,python,json,python-3.x,Python,Json,Python 3.x,在打印/存储另一个结果时,我试图插入另一个键:value数据列表。以下是我到目前为止所做的: >>> data = list() >>> data.append({'data':'a','name':'alpha'}) >>> data.append({'data':'b','name':'beta'}) >>> data.append({'data':'c','name':'charlie'}) >>>
键: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
在Python中,赋值(这里data[names.index(name)]['score']=score
)是一条语句,因此不能在需要表达式的地方使用它。您必须先完成作业,然后打印结果(替换此项):
for name, score in res:
print(data[names.index(name)]['score'] = score)
与:
作为旁注:
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)
与
尽管使用类可能是更好的方法。您不能同时打印和分配。只需分配,稍后再打印结果。@Jean Françoisfare我这样试过
result=(data[names.index(name)]['score']=score)
仍然不起作用。请你给我分享一些可行的方法。请。data[names.index(name)]['score']=score
分配。我得到了这个错误>对于name,res中的score:。。。(数据[names.index(name)]['score']=score)文件“”,第2行(数据[names.index(name)]['score']=score)^SyntaxError:无效语法
现在我需要做的事情。作业不能放在括号中。删除它们。你应该解释为什么OP是错误的,而不仅仅是转储工作代码。事实上。。。完成。
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