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

如何在以元组为键的字典中按州名(元组首元素)查询?

解决以元组为键的字典按州名搜索的问题

你创建了一个以元组为键的字典:

stateinfo = {
('Ohio', 'Columbus', 'Scarlet Carnation'): 11747774,
('Texas', 'Austin', 'Bluebonnet'): 30500280,
('North Carolina', 'Raleigh', 'Dogwood'): 10832061,
('Alabama', 'Montgomery', 'Camellia'): 5098746,
('Alaska', 'Juneau', 'Forget-me-not'): 732984,
}

你的需求是仅根据元组的第一个索引(州名)搜索,输出对应的键和值,但之前的错误代码直接将输入的州名和整个元组键做比较,自然无法匹配:

seek = input("Please enter the State to search: ")
    for key, value in stateinfo.items():
        if seek == key:
            print("yes")

正确实现方法

要实现需求,你需要在遍历字典时,取出元组键的第一个元素和输入的州名做比较,而不是直接比较整个元组。以下是修正后的代码:

stateinfo = {
('Ohio', 'Columbus', 'Scarlet Carnation'): 11747774,
('Texas', 'Austin', 'Bluebonnet'): 30500280,
('North Carolina', 'Raleigh', 'Dogwood'): 10832061,
('Alabama', 'Montgomery', 'Camellia'): 5098746,
('Alaska', 'Juneau', 'Forget-me-not'): 732984,
}

seek = input("Please enter the State to search: ")
for key, value in stateinfo.items():
    # 取出元组的第一个元素(州名)和输入值比较
    if seek.strip() == key[0]:
        print(f"匹配到的键: {key}")
        print(f"对应的值: {value}")
        # 如果确定每个州名唯一,可以加break终止循环
        break
else:
    # 循环正常结束(没触发break)说明没找到匹配项
    print("未找到该州的信息")

代码说明

  • key[0] 用于获取元组键的第一个元素(州名),这才是你需要比较的对象。
  • seek.strip() 用于去除输入字符串两端的空格,避免因用户输入空格导致匹配失败。
  • 加入else块是为了处理未找到匹配州名的情况,给出明确提示。
  • 如果字典中每个州名唯一,添加break可以在找到匹配项后立即终止循环,提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:55:09