Python 获取类型错误:将数据插入postgres时,列表索引必须是整数或片,而不是字符串

Python 获取类型错误:将数据插入postgres时,列表索引必须是整数或片,而不是字符串,python,postgresql,list,dictionary,list-comprehension,Python,Postgresql,List,Dictionary,List Comprehension,我试图用列表理解和morgify将数据输入博士后,但我得到了错误 实际上,排序是以下格式的字典: sort = {'forecast': [{'name': some_value, 'search_volume': some_int_value, 'competition': some_float_value}]} data_text = ','.join(c.mogrify( "(%(k)s,%(l['name'])s,l['search_volume'],l['competiti

我试图用列表理解和morgify将数据输入博士后,但我得到了错误

实际上,排序是以下格式的字典:

sort = {'forecast': [{'name': some_value, 'search_volume': some_int_value, 
'competition': some_float_value}]}

data_text = ','.join(c.mogrify(
    "(%(k)s,%(l['name'])s,l['search_volume'],l['competition'])",
    l) for l in [v for k,v in sort.items()])
错误:

Traceback (most recent call last):
  File "/Users/lonewolf/PycharmProjects/seo_keyword_research_tools-master/keyword_expansion_tool.py", line 137, in get_lsi
    expand(current_word)
  File "/Users/lonewolf/PycharmProjects/seo_keyword_research_tools-master/keyword_expansion_tool.py", line 121, in expand
    sorted_data = write_to_file(current_results, current_word)
  File "/Users/lonewolf/PycharmProjects/seo_keyword_research_tools-master/keyword_expansion_tool.py", line 107, in write_to_file
    l) for l in [v for k,v in sort.items()])
  File "/Users/lonewolf/PycharmProjects/seo_keyword_research_tools-master/keyword_expansion_tool.py", line 107, in <genexpr>
    l) for l in [v for k,v in sort.items()])
TypeError: list indices must be integers or slices, not str
回溯(最近一次呼叫最后一次):
文件“/Users/lonewolf/PycharmProjects/seo_keyword_research_tools-master/keyword_expansion_tool.py”,get_lsi第137行
展开(当前单词)
文件“/Users/lonewolf/PycharmProjects/seo_keyword_research_tools-master/keyword_expansion_tool.py”,第121行,展开
排序的\u数据=将\u写入\u文件(当前\u结果,当前\u字)
文件“/Users/lonewolf/PycharmProjects/seo_keyword_research_tools-master/keyword_expansion_tool.py”,第107行,在write_to_文件中
l) 对于l in[v表示k,v表示sort.items()])
文件“/Users/lonewolf/PycharmProjects/seo_keyword_research_tools-master/keyword_expansion_tool.py”,第107行,在
l) 对于l in[v表示k,v表示sort.items()])
TypeError:列表索引必须是整数或片,而不是str

您可以将语法更改为:

c.mogrify(
    "(%(k)s,%(name)s,%(search_volume)s,%(competition)s",
    {'k': k, 'name': l['name'],
     'search_volume': l['search_volume'],
     'competition': l['competition'] })
通过传递所需的值,而不是对象


注意,这似乎不是一个有效的SQL表达式,应该作为psycopg

的第一个参数。它看起来好像
l
是一个列表,而不是一个字典。请显示回溯。名单上有很多东西,我们一个也看不到。如果代码被其他人阅读,您认为意图是否明确?但是[v代表k,v in sort.items()]应该给我字典列表!!我用l重复这个,所以每个l都应该是一个字典,对吗?请用“!!”停止。我忍不住读了它,因为你对我们大喊大叫,我想你不是有意的,这是我缩进使用的建议?