如何防止字典列表的双重迭代?

How to prevent double interation of list of dictionaries?

我正在尝试通过从 json 对象字符串填充来创建文本字符串。

当我遍历字典列表时,迭代器将字符串加倍。我该如何解决这个问题?

到目前为止的代码:

import json

data = '''{
 "text": "aaa",
 "text2": "bbb",
 "data": [
   {
     "id": "1",
     "text": "Red"
   },    {
     "id": "2",
     "text": "Blue"
   }
 ]
}'''

data_decoded = json.loads(data)
data_list = data_decoded['data']
insertQuery  = "update "+ data_decoded['text'] +" set "
#print(insertQuery)
for pair in data_list:
   for k, v in pair.items():
       if k == data_decoded['text2']:
           where = ' \"' + k + '\" = \'' + v + '\''
       else:
           insertQuery = insertQuery + ' where \"' +k+'\" = \''+ v + '\''

   query = insertQuery + where  
   print(query)

输出:

update aaa set  where "id" = '1' where "text" = 'Red' "id" = '2'
update aaa set  where "id" = '1' where "text" = 'Red' where "id" = '2' where "text" = 'Blue' "id" = '2'

我想要的结果是代码为每个键值对打印一个句子,如下所示:

update aaa set  where "id" = '1' where "text" = 'Red'
update aaa set  where "id" = '2' where "text" = 'Blue'

不完全确定,但您可以只访问您的字典项目而不是遍历它们:)

如果你使用>= python 3.6

query = ''
field = data_decoded['text']
for pair in data_list:
   query += f"update {field} set where id = {pair['id']} where text = {pair ['text']}\n" 

否则:

query = ''
field = data_decoded['text']
for pair in data_list:
   query += "update {field} set where id = {id} where text = {text}\n".format(field=field, id=pair['id'], text=pair['text'])