python - 如何防止字典列表的双重交互?
问题描述
我正在尝试通过从 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'])
推荐阅读
- python - 使用“地板除法”和“模数”运算符索引矩阵
- java - 想法 Quarkus.run(args) 不起作用,quarkus 1.6.0
- c# - C# CPU 调度程序
- angular - 运算符 '>' 不能应用于类型 'boolean' 和 '{ return: Observable
; }' 错误 - python - 在 numpy 数组中裁剪 ROI 区域
- dependency-injection - 如何将 Option 对象添加为服务?
- javascript - IFrame 元素工具提示不会溢出 iframe 容器
- python - 尝试将 playsound 用作菜鸟
- python - 消除字符串中的字符并使用 Pandas 将其转换为 float64
- linux - 如何递归查找特定文件并从linux中找到的所有文件中删除最后一行?