如何防止字典列表的两次交互?

时间:2018-10-23 15:25:45

标签: python json python-3.x key-value

我正在尝试通过填充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'

1 个答案:

答案 0 :(得分:1)

不确定,但是您可以访问字典项,而不必遍历它们:)

如果您使用>= 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'])