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
相关产品推荐
相关产品推荐

