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

Python使用map函数向字典添加输入值时字典为空,如何解决?

问题根因
  • Python 3 中 map() 函数返回的是惰性迭代器,只有在主动遍历该迭代器时,才会实际执行传入的映射函数。你的代码里仅创建了map对象没有遍历,dict_add函数从头到尾都没有被调用过,所以store字典始终为空。
修复方案

方案1:主动触发迭代器执行

如果要保留map写法,只需要手动触发迭代,比如将map对象转为列表:

store = {}

def dict_add(n):
   store[n] = store.get(n,0) + 1

# 转列表会遍历整个map迭代器,触发所有dict_add执行
list(map(dict_add,input("Number: ").split()))

print(store)

方案2:改用for循环实现(更推荐)

map本身设计用于无副作用的元素转换场景,用它执行修改外部变量的操作不符合常规编码习惯,直接用for循环可读性更好:

store = {}

for n in input("Number: ").split():
    store[n] = store.get(n, 0) + 1

print(store)
补充说明
  • 对于有返回值的映射场景,map返回的迭代器也只会在你取值时才计算对应位置的结果,不会提前计算所有元素的映射值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:09:02