如何从字典数组中提取所有key3对应的值?排查代码问题
提取字典数组中指定键的对应值
我有如下字典数组:
NameList = [ {"key1": a, "key2": b, "key3": c}, {"key1": d, "key3": e, "key2": f}, {"key3": g, "key1": h, "key2": i}, {"key2": j, "key1": k, "key3": l}, ]
需要创建新数组,仅存储每个字典中key3对应的数值。
我尝试了以下代码(运行时出现语法错误):
finalarray=[] for item in NameList: for item2 in item: if item2[0] == 'key3': finalarray.append(item2[0])
改用这段代码后:
finalarray=[] for item in NameList: for item2 in item: finalarray.append(item2)
得到的结果是finalarray = ['key1', 'key2', 'key3' ...],并非我需要的key3对应值。
正确解法
方法1:基础循环取值
字典支持直接通过键名获取对应值,不需要嵌套遍历所有键,直接对每个字典执行item['key3']即可拿到目标值:
finalarray = [] for item in NameList: finalarray.append(item['key3'])
运行后finalarray会是[c, e, g, l],完全符合需求。
方法2:列表推导式(简洁写法)
Python中可以用列表推导式一行完成,逻辑和上面的循环完全一致:
finalarray = [item['key3'] for item in NameList]
错误原因说明
- 第一次代码错误:遍历字典时,
item2是字典的键名(比如'key1'),你用item2[0]取的是字符串的第一个字符(比如'k'),和'key3'比较逻辑错误;就算判断成立,append的是字符'k'而非对应的值,完全偏离需求。 - 第二次代码错误:遍历字典的键名并直接append到数组,自然得到的是所有键名的列表,而非
key3对应的数值。
内容的提问来源于stack exchange,提问作者DataScienceGaurav
相关产品推荐
相关产品推荐

