繁体   English   中英

嵌套字典到单个字典

[英]Nested dictionary to single dictionary

因此,我正在构建一个小的工具来将错误及其解决方案保存为知识库。 它存储在SQL数据库中(我正在使用pyodbc)。 用户无权访问数据库,只有GUI。 GUI具有三个按钮,一个按钮用于添加新的ErrorID,一个按钮用于搜索ErrorID(如果数据库中存在),另一个按钮用于删除。 它也有一个文本面板,该面板应显示搜索到的错误的解决方案。

因此,需要提取数据库的列和行并将它们放入字典中,然后我需要遍历该字典以搜索所搜索的错误,并在文本面板上显示解决方案。 我的问题是,我得到的字典具有以下形式:{{('Error',1):('Solution',one)}},依此类推,所以我似乎无法成功地通过它来仅显示单词文本面板上的“一个”。 换句话说,当我搜索“ 1”时,它应该在文本面板上打印“ 1”。

我的问题是:如何将这个{{('Error',1):('Solution',one)}}转换成这个{“ 1”:“ one”}?

编辑:对不起,我忘了添加代码的某些部分。

这部分是将字典的每一行追加的内容:

readsql = sql_conn.sql()
readsql.sqlread()
columns = [column[0] for column in readsql.cursorv.description]
results = []
for row in readsql.cursorv.fetchall():
    results.append(zip(columns, row))
results = dict(results)

我试图做到这一点,就像存储我知道它将在名为string的字符串上显示的dict的一部分一样。 然后将其与for循环中的“ k”进行比较,但这不起作用。

string = "('Error', " + str(error_number) + ")"
for k in results.keys():
    if k == string:
        post = readsql.cursorv.execute('SELECT * FROM master.dbo.Errors WHERE Error = (?)', (error_number))
        text_area.WriteText(post)
        break

这是sql类:

class sql():

    def __init__(self):
        self.conn = pyodbc.connect('Driver={SQL Server};'
                            'Server=.\SQLEXPRESS;'
                            'Database=master;'
                            'Trusted_Connection=yes;')
        # cursor variable
        self.cursorv = self.conn.cursor()

    def sqlread(self):
        self.cursorv.execute('SELECT * FROM master.dbo.Errors')

您的问题来自以下代码,这些代码不必要将列标题压缩到结果字典中:

for row in readsql.cursorv.fetchall():
    results.append(zip(columns, row))
results = dict(results)

您可以直接从fetchall方法返回的元组序列构造所需的dict:

results = dict(readsql.cursorv.fetchall())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM