Python初学者如何提取列表中字典的数值并转为整数列表?
解决方法
你的代码当前输出嵌套列表的原因是,list(element.values())会把每个字典的 value 转成单元素列表(比如['1']),然后直接添加到values里,而且值还是字符串类型。要得到目标的整数列表,只需要两步调整:取出单元素列表里的字符串,再把它转成整数。
方法一:修改原循环(最直观)
直接在原代码基础上调整,先拿出字符串值,转成整数再添加:
my_list=[ {"first":"1"}, {"second": "2"}, {"third": "1"}, {"four": "5"}, {"five":"5"}, {"six":"9"}, {"seven":"7"} ] values = [] for element in my_list: # 取出字典里的唯一字符串值 str_val = list(element.values())[0] # 转为整数后加入列表 values.append(int(str_val)) print(values) # 输出: [1,2,1,5,5,9,7]
方法二:用列表推导式(更简洁)
如果想简化代码,可以用Python的列表推导式一步完成:
my_list=[ {"first":"1"}, {"second": "2"}, {"third": "1"}, {"four": "5"}, {"five":"5"}, {"six":"9"}, {"seven":"7"} ] values = [int(list(item.values())[0]) for item in my_list] print(values) # 输出: [1,2,1,5,5,9,7]
方法三:避免转列表(效率稍高)
因为每个字典只有一个键值对,还可以用next(iter(element.values()))直接取出值,不用转成列表:
my_list=[ {"first":"1"}, {"second": "2"}, {"third": "1"}, {"four": "5"}, {"five":"5"}, {"six":"9"}, {"seven":"7"} ] values = [] for element in my_list: str_val = next(iter(element.values())) values.append(int(str_val)) print(values) # 输出: [1,2,1,5,5,9,7]
对应的列表推导式版本:
values = [int(next(iter(item.values()))) for item in my_list]
内容的提问来源于stack exchange,提问作者Prerk
相关产品推荐
相关产品推荐

