我正在尝试在另一个结果中打印/存储时插入key:value
的另一个data
列表。以下是我到目前为止所做的事情:
>>> 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}
答案 0 :(得分:2)
在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]
答案 1 :(得分:0)
替换
<DllImport("MuseDll.dll")>
Public Shared Function Read_Parameters(ByVal board As Byte, ByVal params As UShort()) As Integer
End Function
带
for name, score in res:
print(data[names.index(name)]['score'] = score)
虽然这可能是一种更好的使用类的方法。