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

存储化学元素信息实现双向查询应选用哪种合适的数据结构

推荐数据结构方案

你可以同时维护两个独立的字典实现双向查询,逻辑简单、查询效率高,完全匹配你的需求:

  • 第一个字典proton_to_element:键为整数类型的质子数,值为存储对应元素符号和名称的元组,用于响应整数输入的查询
  • 第二个字典query_to_proton:键为字符串类型的元素符号、元素名称(可统一转小写存储兼容用户大小写输入),值为对应元素的质子数,用于响应字符串输入的查询

实现逻辑说明

遍历element.txt文件的每一行时,跳过注释行和空行,将每行按逗号拆分后同时给两个字典赋值即可,实现成本极低。
你也可以直接参考以下Python示例代码:

proton_to_element = {}
query_to_proton = {}

# 读取元素信息文件
with open("element.txt", "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        # 跳过注释行与空行
        if not line or line.startswith("#"):
            continue
        proton_str, symbol, name = line.split(",")
        proton = int(proton_str)
        # 写入质子数→元素信息的映射
        proton_to_element[proton] = (symbol, name)
        # 写入符号/名称→质子数的映射,统一转小写兼容不同输入格式
        query_to_proton[symbol.lower()] = proton
        query_to_proton[name.lower()] = proton

# 查询逻辑示例
user_input = input("请输入质子数/元素符号/元素名称:").strip()
try:
    # 尝试转换为整数,按质子数查询
    input_proton = int(user_input)
    if input_proton in proton_to_element:
        symbol, name = proton_to_element[input_proton]
        print(f"查询结果:元素符号 {symbol},元素名称 {name}")
    else:
        print("未查询到对应质子数的元素")
except ValueError:
    # 转换失败,按字符串查询
    input_str = user_input.lower()
    if input_str in query_to_proton:
        print(f"查询结果:对应质子数为 {query_to_proton[input_str]}")
    else:
        print("未查询到对应符号/名称的元素")

方案优势

  • 所有查询都是O(1)时间复杂度,响应速度快
  • 没有复杂的嵌套结构,逻辑清晰易维护,后续扩展元素属性也很方便
  • 天然支持大小写容错,用户输入大小写不规范时也能正常匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:15:03