簡體   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