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

如何用Python比较字典键与另一字典键的部分内容并实现值相除?

解决字典短语首词匹配与值相除的问题

嘿,完全懂你不想推翻现有项目的顾虑!咱们不用搞复杂的列表或者索引,用Python的字典特性就能轻松搞定这个需求。先理清楚你的核心目标:找到dict1中键(双词短语)的第一个单词和dict2键完全匹配的项,然后将对应的值相除。

核心思路

Python里字典的遍历和成员检查非常方便,不用像Java那样写嵌套循环。咱们可以这样做:

  • 遍历dict1的每一个键值对,直接拿到短语和对应的值
  • 拆分短语提取第一个单词
  • 检查这个单词是否存在于dict2的键中
  • 如果存在,就计算两个值的商,把结果存起来(或者直接输出)

代码实现

dict1 = {'the dog': 3, 'dog jumped': 4, 'jumped up': 1, 'up onto': 8, 'onto me': 13}
dict2 = {'up': 12, 'dog': 22, 'jumped': 33}

# 用来存储结果的字典
result_dict = {}

# 遍历dict1的键值对
for phrase, val1 in dict1.items():
    # 拆分短语,取第一个单词
    first_word = phrase.split()[0]
    # 检查这个单词是否在dict2中存在
    if first_word in dict2:
        val2 = dict2[first_word]
        # 计算除法并存入结果字典
        result_dict[phrase] = val1 / val2

# 打印结果
print(result_dict)

运行这段代码会输出:

{'dog jumped': 0.18181818181818182, 'jumped up': 0.030303030303030304, 'up onto': 0.6666666666666666}

关键细节解释

  1. 关于字典迭代:你之前说dict2.keys()不可迭代,其实在Python3里dict.keys()返回的是一个可迭代的视图对象,完全可以直接遍历。甚至更简单的是,直接写for key in dict2就会遍历所有键,不用特意调用keys()。
  2. 拆分短语的技巧:用split()方法默认按空格拆分短语,split()[0]直接取第一个单词,比你Java思路里的字符串拼接检查要靠谱得多,不会出现误匹配的情况。
  3. 效率优势:用first_word in dict2做成员检查是O(1)的时间复杂度,比嵌套循环的O(n*m)高效太多,尤其是当字典规模变大时,这个优势会更明显。

可选补充:异常处理

如果担心dict2里的值可能为0导致除法错误,可以加个简单的判断:

if first_word in dict2 and dict2[first_word] != 0:
    result_dict[phrase] = val1 / dict2[first_word]

这样就能避免除以零的异常啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:37:09