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

Python字典取值技术问询:如何通过键获取多个值?以及无键时如何实现周期表元素信息查询

Python技术问题解答

嘿,我来帮你搞定这两个问题:

问题1:如何在Python中通过键从字典获取多个值?

这里有几个实用的方法,看你需求选就行:

  • 列表推导式(最常用,灵活):能批量取数,还能处理键不存在的情况,给个默认值就行

    my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    target_keys = ['a', 'c', 'e']
    # 用get方法,键不存在时返回自定义默认值
    values = [my_dict.get(key, '未找到') for key in target_keys]
    print(values)  # 输出: [1, 3, '未找到']
    
  • operator.itemgetter(高效):如果你确定要取的键都在字典里,用这个速度更快,返回的是元组

    from operator import itemgetter
    my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    target_keys = ['a', 'c']
    values = itemgetter(*target_keys)(my_dict)
    print(values)  # 输出: (1, 3)
    
  • 循环遍历(直观,适合加额外逻辑):要是你需要在取值时做一些判断或者处理,直接循环最清楚

    my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    target_keys = ['a', 'c', 'e']
    values = []
    for key in target_keys:
        if key in my_dict:
            values.append(my_dict[key])
        else:
            values.append(None)  # 这里可以换成你想要的默认值
    print(values)  # 输出: [1, 3, None]
    

问题2:通过元素符号获取周期表元素信息(无需直接用Element枚举键)

你的ELEMENTS_DATA用Element枚举当键,但每个元素数据里都有symbol字段,咱们直接建一个符号到元素信息的映射字典就能解决问题,而且后续查找超方便:

方法一:提前构建映射(推荐)

程序启动时遍历一次ELEMENTS_DATA,生成以元素符号为键的新字典,之后查找都是秒出结果:

# 初始化时构建符号到元素信息的映射
symbol_to_element = {elem_data["symbol"]: elem_data for elem_data in ELEMENTS_DATA.values()}

# 用户输入处理
user_symbol = input("请输入元素符号: ").strip()
# 转成大写,兼容用户输入小写的情况
user_symbol = user_symbol.upper()
element_info = symbol_to_element.get(user_symbol)

if element_info:
    print(f"元素名称: {element_info['name']}")
    print(f"原子量: {element_info['atomic-mass']}")
    print(f"发现者: {element_info['discovered-by']}")
    # 其他信息按需输出
else:
    print("抱歉,没找到这个元素,请检查符号是否正确哦~")

方法二:动态遍历(适合小数据量)

要是不想提前建字典,每次输入时遍历查找也可以,就是数据多的时候效率低一点:

user_symbol = input("请输入元素符号: ").strip().upper()
target_info = None

for elem_data in ELEMENTS_DATA.values():
    if elem_data["symbol"].upper() == user_symbol:
        target_info = elem_data
        break

if target_info:
    print(f"找到元素信息:\n{target_info}")
else:
    print("元素不存在,请确认符号格式~")

内容的提问来源于stack exchange,提问作者Khiar Kheng Ng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:17:42