Python中如何将结果存入tuple 及word_freq单词频率函数实现问题
问题解答
问题1:在Python中如何将计算结果存储到tuple中?
tuple是Python内置的不可变有序序列,存储计算结果可按两种场景操作:
- 固定数量的计算结果,直接组装生成tuple即可
比如你计算得到两个结果a = 2 + 3、b = 4 * 5,执行res_tuple = (a, b)就可以把结果存入tuple。 - 动态生成的计算结果(比如循环中逐步得到的多个结果),先存入可变的list,最后调用
tuple()方法转换为tuple
示例代码:res_list = [] for i in range(3): # 模拟计算逻辑 calc_res = i * 3 res_list.append(calc_res) # 转换为tuple存储 res_tuple = tuple(res_list)
注意:不要用tuple作为自定义变量名,会覆盖Python内置的tuple类型,导致后续相关调用报错
问题2:word_freq函数实现
现有代码问题
你编写的代码存在3个核心问题:
- 没有把输入字符串按空格拆分为独立单词,直接遍历字符串只会逐个统计字符的出现次数,不符合需求
- 统计维度错误:需求是统计不同单词长度的出现次数,现有代码统计的是单个字符的出现次数
- 没有过滤长度为2的单词,也没有按要求排序返回指定格式的结果
正确实现代码
def word_freq(text): # 拆分字符串为独立单词列表 words = text.split() len_count = {} for word in words: word_len = len(word) # 过滤长度为2的单词 if word_len == 2: continue # 更新对应长度的计数 if word_len in len_count: len_count[word_len] += 1 else: len_count[word_len] = 1 # 转换为tuple组成的list,按count降序排序,count相同则按单词长度降序排序 res = sorted(len_count.items(), key=lambda x: (-x[1], -x[0])) return res # 测试示例 print(word_freq('a aaa a aaaa')) # 输出符合count降序要求:[(1, 2), (4, 1), (3, 1)]
如果你需要和你给出的示例输出[(4, 1), (3, 1), (1, 2)]完全一致(优先按单词长度降序排序),只需要把排序规则修改为key=lambda x: -x[0]即可。
内容的提问来源于stack exchange,提问作者Isxxn
相关产品推荐
相关产品推荐

