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

如何基于文本文件构建字典并实现国家名称查询收入功能

如何从文本文件构建字典并实现国家收入查询

嘿,我来帮你搞定这个问题!从文本文件构建字典然后查询国家收入其实很简单,我给你一步步拆解:

第一步:从文本文件构建收入字典

首先我们要把文本文件里的每行数据转换成字典的键值对——国家名作为键,对应的收入作为值。这里要注意,有些国家名可能包含空格(比如“United States”),所以不能直接用普通的split()分割,得用更精准的方式:

# 初始化空字典来存储国家和收入
country_income = {}

# 替换成你的文本文件路径,比如'income_data.txt',如果文件不在当前目录就写绝对路径
file_path = 'income_data.txt'

with open(file_path, 'r', encoding='utf-8') as file:
    for line in file:
        # 去掉每行首尾的换行符、空格等空白字符
        cleaned_line = line.strip()
        # 跳过空行,避免无效数据
        if not cleaned_line:
            continue
        
        try:
            # 用' $'作为分隔符,只分割一次,这样即使国家名有空格也能正确拆分
            country_name, income_value = cleaned_line.split(' $', 1)
            # 把处理好的键值对存入字典,再做一次strip确保没有多余空格
            country_income[country_name.strip()] = income_value.strip()
        except ValueError:
            # 如果某行格式不对,打印警告并跳过,避免程序崩溃
            print(f"⚠️ 无法解析行:{cleaned_line},已跳过该行")

这段代码会自动处理空行,还能容错格式错误的行,非常实用。

第二步:实现交互式查询功能

接下来我们写一个简单的交互逻辑,让用户输入国家名就能查到对应的收入,还支持退出功能:

while True:
    # 获取用户输入,同时去掉首尾空格
    user_query = input("\n请输入要查询的国家名称(输入'quit'或'退出'结束程序):").strip()
    
    # 处理退出指令
    if user_query.lower() in ['quit', '退出']:
        print("👋 程序已退出,再见!")
        break
    
    # 先精准匹配(区分大小写)
    if user_query in country_income:
        print(f"✅ {user_query} 的收入为:${country_income[user_query]}")
    else:
        # 如果精准匹配不到,尝试不区分大小写的模糊匹配
        matched_country = next(
            (country for country in country_income if country.lower() == user_query.lower()),
            None
        )
        if matched_country:
            print(f"🤔 你要找的是不是「{matched_country}」?它的收入为:${country_income[matched_country]}")
        else:
            print(f"❌ 未找到国家「{user_query}」的数据,请检查输入是否正确!")

这个查询逻辑很友好:如果用户输入的大小写和字典里的不一致(比如输入qatar而不是Qatar),程序会自动匹配到正确的条目,还会给出提示。

一些额外提示

  • 如果你想让字典的键统一为小写(或者大写),可以在存入字典时转换:country_income[country_name.strip().lower()] = income_value.strip(),这样查询时也转成小写,就完全不用考虑大小写问题了。
  • 确保你的文本文件编码正确,如果遇到乱码,可以在open()函数里指定encoding='utf-8'或者encoding='gbk'(根据文件实际编码调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:25:48