如何在Python中获取嵌套字典内所有子字典的type值?
解决Python嵌套字典获取所有'type'值的问题
嘿,我来帮你梳理下问题所在,然后给出正确的实现方式~
错误原因分析
你写的循环里,第一个for item in data其实遍历的是字典的键(也就是'1'和'2'这两个字符串),而不是对应的子字典。所以当你尝试item['type']时,相当于在对字符串使用字符串索引,这显然不符合Python的规则,自然就抛出TypeError: string indices must be integers这个错误啦。
正确实现方法
这里给你两种常用的正确写法:
方法1:直接遍历字典的子字典值
如果只需要获取每个子字典的type值,直接遍历data.values()就能拿到所有子字典:
data = { '1': { 'type': 'card', 'card[number]': 12345, }, '2': { 'type': 'wechat', 'name': 'paras' }} for sub_dict in data.values(): print(sub_dict['type'])
运行后会输出:
card wechat
方法2:遍历键值对(需要外层键时用)
如果同时需要用到外层的键(比如'1'、'2'),可以用data.items()遍历键值对:
for key, sub_dict in data.items(): print(f"键 {key} 对应的type值是:{sub_dict['type']}")
运行输出:
键 1 对应的type值是:card 键 2 对应的type值是:wechat
可选:处理可能缺失'type'键的情况
如果担心有的子字典没有'type'键,可以加个判断避免KeyError:
for sub_dict in data.values(): type_value = sub_dict.get('type', '无type字段') print(type_value)
或者用in判断:
for sub_dict in data.values(): if 'type' in sub_dict: print(sub_dict['type']) else: print("该子字典不存在type字段")
内容的提问来源于stack exchange,提问作者user_123
相关产品推荐
相关产品推荐

