[英]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.