Python字典绑定列表值覆盖及遍历键值对出错问题求助
问题解决:字典赋值覆盖与键值对遍历
嘿,我来帮你搞定这两个问题!
第一个问题:为什么字典的key会被重复赋值?
先看你写的代码:
a=[2,1] b=['app','applied'] f={} for id in a: for name in b: f[id]=name
这里的问题是两层嵌套循环导致每个key被多次赋值:
- 处理
id=2时,先把f[2]设为'app',接着又被覆盖成'applied' - 处理
id=1时,同样先赋值'app',再被覆盖成'applied'
(你说结果是{2:'app', 1: 'app'},大概率是循环顺序或列表顺序有调整,但核心矛盾是重复赋值覆盖了之前的结果)
要实现每个key对应唯一value,最简洁的方式是用zip()把两个列表的元素一一配对,直接转成字典:
a=[2,1] b=['app','applied'] f = dict(zip(a, b)) # 得到的结果就是 {2: 'app', 1: 'applied'}
如果一定要用循环实现,也可以遍历配对后的元素:
f = {} for id, name in zip(a, b): f[id] = name
第二个问题:如何同时获取字典的键和值?
直接for c in f:遍历字典时,默认只会拿到键,所以你只能看到2、1。如果要同时获取键和值,必须调用字典的items()方法,它会返回每一组键值对的元组:
f = {2: 'app', 1: 'applied'} for key, value in f.items(): print(key, value) # 输出结果: # 2 app # 1 applied
你之前用for c,k in f:报错,就是因为没调用items()——直接遍历字典只能拿到单个元素(键),没法解包成两个变量。
内容的提问来源于stack exchange,提问作者sudharsan
相关产品推荐
相关产品推荐

