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

如何将一个字典中的对应值作为项合并到for循环内创建的另一个字典中?

问题:如何在遍历单词列表时,为每个字典添加对应单词的出现次数?

我在处理字典和循环时遇到了一个问题:

  1. 我有一个统计单词出现次数的字典wordcount,示例如下:
    wordcount={'sort': 3, 'count': 3, 'wrap': 3, 'coin': 11}
    
  2. 我通过for循环遍历单词列表wordlist,为每个单词调用Google N-grams接口获取统计数据,构建包含额外属性的字典results_nouns_final,核心代码如下:
    for word in wordlist:
        url =f"https://books.google.com/ngrams/json?content= {word}&year_start=1965&year_end=1975&corpus=26&smoothing=3"
        sleep(1)
        resp = requests.get(url)
        if resp.ok:
            results = json.loads(resp.content)[0]
            results_clean = {key: val for key, val in results.items() if key == "ngram" or key =="timeseries"}
            timeseries = {key: results_clean[key] for key in results_clean.keys() & {'timeseries'}}
            timeseriesvalues= list(timeseries.values())
            timeseriesmean=np.mean(timeseriesvalues)
            ngramsonly = {key: results_clean[key] for key in results_clean.keys() & {'ngram'}}
            ngramsvalues = list(ngramsonly.values())
            # 这里是出错的地方
            results_nouns_final={"word": ngramsvalues, "occurrence_mean": timeseriesmean, "count": wordcount.items()}
    
  3. 现在的问题是,results_nouns_final里的count字段会包含wordcount的所有键值对,比如:
    {'word': ['sort'], 'occurrence_mean': 5.319996372468642e-05, 'count': dict_items([('sort', 3), ('count', 3), ('wrap', 3), ('coin', 11)])}
    
    而我期望的是每个字典只对应当前单词的出现次数,比如:
    {'word': ['sort'], 'occurrence_mean': 5.319996372468642e-05, 'count': 3}
    

请问我哪里出错了?


解答

很简单的问题——你用错了字典的取值方式!

你现在写的wordcount.items()会返回整个字典里所有键值对的迭代器,所以每次循环都会把wordcount的全部内容塞进count字段里,这当然不是你想要的结果。

你真正需要的是当前遍历到的word对应的出现次数,直接通过字典的键访问就能拿到:

results_nouns_final={"word": ngramsvalues, "occurrence_mean": timeseriesmean, "count": wordcount[word]}

不过这里有个小坑:如果wordlist里存在wordcount中没有的单词,直接用wordcount[word]会抛出KeyError。为了让代码更健壮,推荐用get()方法,同时指定一个默认值(比如0):

results_nouns_final={"word": ngramsvalues, "occurrence_mean": timeseriesmean, "count": wordcount.get(word, 0)}

这样修改后,每次循环都会精准获取当前单词在wordcount里对应的次数,就能得到你期望的输出了!

内容的提问来源于stack exchange,提问作者Juan Alvarez Vilanova

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:22:36