如何获取字典中键对应值的长度?现有Python代码问题求助
如何获取字典中键对应值的目标长度
你的代码存在两个核心问题,导致无法得到预期输出:
- 循环中错误地对键字符串操作,而非键对应的字典值
- 用
append添加了嵌套列表,导致值的列表结构不符合预期
修正方案一:调整元素添加方式(推荐)
如果你的需求是直接将元素存入字典的值列表,而非嵌套存储,将append替换为extend(或直接初始化时赋值),再通过len(keys[key])获取值列表的长度:
keys = { 'id':[], 'name': [], 'adress': [], } # 使用extend将列表元素逐个添加,而非append整个列表 keys['id'].extend([1, 2, 3]) keys['name'].extend(['nm1', 'nm2', 'test3']) keys['adress'].extend(['adr1', 'adr2']) for key in keys: # 通过keys[key]获取对应值,用len()计算长度 print(f'{key} : {len(keys[key])}')
或者直接初始化字典时赋值目标列表,更简洁:
keys = { 'id': [1, 2, 3], 'name': ['nm1', 'nm2', 'test3'], 'adress': ['adr1', 'adr2'], } for key in keys: print(f'{key} : {len(keys[key])}')
修正方案二:保留嵌套列表结构
如果必须保留当前的嵌套列表结构(即值列表中存储的是子列表),则需要获取值列表中第一个子列表的长度:
keys = { 'id':[], 'name': [], 'adress': [], } keys['id'].append([1, 2, 3]) keys['name'].append(['nm1', 'nm2', 'test3']) keys['adress'].append(['adr1', 'adr2']) for key in keys: # 取嵌套列表的第一个元素,再计算其长度 print(f'{key} : {len(keys[key][0])}')
原代码错误说明
for key in keys遍历的是字典的键(如'id'这类字符串),key.__len__是字符串的长度方法对象,并非你需要的字典值的长度,正确做法是通过keys[key]获取对应的值- 原代码用
append将整个列表作为单个元素添加到值列表中,导致keys['id']变成[[1,2,3]],它的长度是1,而非你预期的3
内容的提问来源于stack exchange,提问作者Fa4stik
相关产品推荐
相关产品推荐

