如何编写函数从字典列表中获取指定name对应的value值?
问题分析与修正
你的代码逻辑偏离了需求:你需要根据name字段的值,找到对应字典的value字段内容,但原代码是遍历所有键值对,找到值等于传入key的项并打印,这就导致传入address时,匹配到的是{'name': 'address'}里的v='address',所以打印出address而非目标值。
另外,原函数仅打印结果,没有返回值,因此address变量最终会是None。
修正后的代码
my_list = [ {'name': 'address', 'value': 'Testraat 100'}, {'name': 'ripeID', 'value': 'nan'}, {'name': 'name', 'value': 'Admin Account'}, {'name': 'phone', 'value': '+31 6 12345678'}, {'name': 'email', 'value': 'admin@domein.nl'} ] def get_value(lst, key): for d in lst: # 检查当前字典的name字段是否等于目标key if d['name'] == key: # 返回对应的value字段值 return d['value'] # 未找到匹配项时返回None(可选) return None address = get_value(my_list, 'address') print(address) # 输出: Testraat 100
优化说明
- 直接针对每个字典的
name字段做判断,无需遍历所有键值对,逻辑更精准高效。 - 使用
return返回结果,让调用方可以接收并使用该值,而非仅打印。 - 如果需要处理列表中存在缺少
name或value字段的字典,可以用get方法避免报错:
def get_value(lst, key): for d in lst: if d.get('name') == key: return d.get('value') return None
内容的提问来源于stack exchange,提问作者Beeelze
相关产品推荐
相关产品推荐

