簡體   English   中英

如何在 python 中迭代地將字典的鍵和值分配給不同的變量

[英]how to assign key and value of dictionary to different variables iteratively in python

我有這本詞典

myDict = {'key1' : 'val1', 'key2' : 'val2', 'key3' : 'val3'}

我反復使用'myDict'的'key'和'value'來創建檢查和單選按鈕。

for key, value in myDict.items():
    myDict[key] = Variable()
    myDict[value] = Variable()
    c = Checkbutton(root, text=key, variable=myDict[key], onvalue=key, offvalue="").pack(anchor=W)
    
    Radiobutton(root, text='radio1', variable=myDict[value], value=1).pack(anchor=E)
    Radiobutton(root, text='radio2', variable=myDict[value], value=2).pack(anchor=E)

    var_list.append(myDict[key]) #var_list is an empty list defined already
print(var_list) 

我收到了這個錯誤

Traceback (most recent call last):
File "Check_box_lis_0305.py", line 21, in <module>
for key, value in myDict.items():
RuntimeError: dictionary changed size during iteration

你能幫我解決這個問題嗎?

checks = {}
radios = {}
for key, value in myDict.items():
    checks[key] = Variable()
    radios[key] = Variable()
    c = Checkbutton(root, text=key, variable=checks[key], onvalue=key, offvalue="").pack(anchor=W)
    
    Radiobutton(root, text='radio1', variable=radios[key], value=1).pack(anchor=E)
    Radiobutton(root, text='radio2', variable=radios[key], value=2).pack(anchor=E)

    var_list.append(checks[key]) #var_list is an empty list defined already
print(var_list) 

現在,當您收到點擊事件時, checks[key]將具有選中按鈕的值,而radios[key]將具有單選按鈕的選擇。 我不確定你為什么需要var_list

問題是您在 for 循環期間使用

myDict[key] = Variable()
myDict[value] = Variable()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM