You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入的字典点击按钮后为何仍为空?

问题:重新赋值导入的字典后仍为空

我从Python文件dictnombre.py导入字典dict_nombre并赋值给变量dict,删除dict中的键值对操作运行正常。但点击按钮bouton_chiffre后,尽管函数nombres会重新将导入的字典赋值给dict,但dict依然是空的。

dictnombre.py 代码

dict_nombre={'un (chiffre)':'yi-',
'deux':'èr',
'trois':'sa-n',
'quatre':'sì',
'cinq':'wû',
'six':'liù',
'sept':'qî',
'huit':'ba-',
'neuf (chiffre)':'jiû',
'dix':'shí'
}

主程序相关代码

...
import dictnombre
...

def nombres():
    global dict
    dict=dictnombre.dict_nombre
...
    del dict[key_aleatoire]
...
bouton_chiffre=Button(cadre_bouton,text="Nombres seulement",width=15,height=1,bg="blue",bd=5, command=nombres)
bouton_chiffre.pack(side=LEFT)

问题原因

Python里字典是可变对象,当你第一次执行dict=dictnombre.dict_nombre时,dict和dictnombre.dict_nombre指向的是内存中同一个字典对象。后续的del dict[key_aleatoire]操作直接修改了dictnombre模块里的原始字典——模块导入后其中的变量会被缓存,所以后续再赋值dict=dictnombre.dict_nombre时,拿到的是已经被修改(键值对被删)后的字典。

解决方案

每次赋值时创建原始字典的副本,而不是直接引用:

def nombres():
    global dict
    dict = dictnombre.dict_nombre.copy()  # 创建字典副本
...
    del dict[key_aleatoire]

这样每次点击按钮,dict都会获取原始字典的全新副本,删除操作只会影响当前副本,不会修改模块里的原始字典,下次点击就能重新拿到完整的字典了。

内容的提问来源于stack exchange,提问作者Meriole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:43:17