Python遍历数组与字典匹配赋值:如何通过数组元素访问字典键
嘿,这问题其实很容易解决,我来一步步给你讲清楚!
首先先提个小建议:别用dict当变量名,这是Python的内置类型,用它当变量名会覆盖掉原本的功能,咱们换成my_dict更稳妥。
解决方案代码
先直接给你能跑通的代码,然后再解释细节:
# 初始数据 my_dict = {1:5, 2:5, 3:5} arr = [1,2] # 遍历字典的所有键,一次处理完 for key in my_dict: if key in arr: my_dict[key] = 0 else: my_dict[key] += 1 # 输出结果 print("数组保持不变:", arr) print("处理后的字典:", my_dict)
运行这段代码后,你会得到预期的结果:
- 数组还是
[1,2] - 字典变成
{1:0, 2:0, 3:6}
关于你问的「用数组元素访问字典键」
其实你想的dict[i](这里就是my_dict[key])完全是对的!因为数组arr里的元素就是字典的键(都是整数类型),直接用数组里的元素作为索引去访问字典就行。
在上面的代码里,我们遍历字典的每个键key,判断这个键是否存在于数组arr中:
- 如果存在,就把对应的值设为0;
- 如果不存在,就把对应的值加1。
另一种分步处理的方式(更稳妥)
如果数组里可能包含字典没有的键,怕出现KeyError,可以分成两步处理:
my_dict = {1:5, 2:5, 3:5} arr = [1,2] # 第一步:处理数组里的键,设为0(先判断键是否存在) for key in arr: if key in my_dict: my_dict[key] = 0 # 第二步:处理字典中不在数组里的键,值加1 for key in my_dict: if key not in arr: my_dict[key] += 1
这种方式先把数组里匹配的键处理完,再处理剩下的,逻辑更清晰,也能避免数组里有无效键时报错。
注意事项
- 要保证数组元素的类型和字典键的类型一致,比如如果数组里是字符串
"1",那和字典的整数键1是不匹配的,这点要留意; - 字典的键查找是O(1)的,所以不管用哪种方式,效率都很高,不用担心性能问题。
内容的提问来源于stack exchange,提问作者user1970728
相关产品推荐
相关产品推荐

