首页 > 解决方案 > 尝试过滤具有特定值的字典列表时出错我收到错误

问题描述

我从 mysql 数据库的表中获取数据。我正在尝试过滤具有特定值的字典列表。当我执行代码时,出现以下错误:

使用 IDE = PyCharm。

错误:

[x.append(k) for k in lst_cmp_helpdesk_dic if "Doble" in k[key]]

TypeError: “int”类型的参数不可迭代

import mysql.connector


def test_initialize_test_data():

    global lst_cmp_helpdesk
    global lst_cmp_helpdesk_dic

    cnx = mysql.connector.connect(user='User', password='Password', host='Srv Name or IP', database='DataBase Name')
    try:
        cursor_dic = cnx.cursor(dictionary=True,buffered=True)
        cursor_dic.execute("select * from Table_Name")
        lst_cmp_helpdesk_dic = cursor_dic.fetchall()
    
        x = []
        for key in lst_cmp_helpdesk_dic[0].keys():
            [x.append(k)for k in lst_cmp_helpdesk_dic if "Search_Text" in k[key]]
            count = len(([dict(t) for t in set([tuple(d.items()) for d in x])]))
        print("\n Length = " + str(count))
    finally:
        cnx.close()

标签: pythonmysql

解决方案


你在说

"Search_Text" in k[key]

k[key]返回一个 int。因此,您不能使用in.

您可以实际打印的一件事lst_cmp_helpdesk_dic[0].keys()并确保它包含您要比较的名称"Search_text"


推荐阅读