Python如何无需循环提取列表嵌套字典的指定键值
问题解答
完全可以不使用循环实现该需求,你的报错是因为混淆了列表索引规则和字典的取值逻辑,具体说明和解决方法如下:
错误原因分析
- 列表为0起始索引:你要取的第二个字典对应列表
nested2的索引是1,不是2,索引2对应的是第三个字典{'b': 3, 'c': "yes"} - 字典取值依赖键名:字典是无序的键值对结构,不能用位置序号取值,必须传入你要查询的键名,你写的
[1]对字典来说是查询键为1的值,自然会报KeyError
你之前尝试的代码对应的具体问题:
print(nested2[2][1]):先取了第三个字典,又查询这个字典里不存在的键1,报KeyErrorprint([nested2[2]]):把第三个字典包成了新列表输出,所以得到[{'b': 3, 'c': 'yes'}]print([nested2[2][1]]):同样是查询第三个字典的键1,依然报错
正确实现代码
nested2 = [{'a': 1, 'b': 3}, {'a': 5, 'c': 90, 5: 50}, {'b': 3, 'c': "yes"}] print(nested2[1]['c'])
运行上述代码即可直接输出90,逻辑和你之前学的嵌套列表取值逻辑一致:先按索引取外层列表的元素,再按规则取内层结构的值,只是内层是字典的话要传键名而非位置索引。
内容的提问来源于stack exchange,提问作者Loptr
相关产品推荐
相关产品推荐

