使用基础Python(不使用Pandas)将字典转换为带列名的表并筛选前2高身高
纯基础Python实现方案
无需依赖Pandas或其他第三方库,仅使用Python内置语法即可完成目标,实现逻辑如下:
- 对原字典条目按身高数值降序排序,截取排序后结果的前2个元素,得到身高Top2的条目
- 自动计算两列的文本展示宽度,通过字符串对齐方法生成格式规整的表格
- 生成的表格既可以直接在控制台打印展示,也可以直接输出为可复用的Markdown格式文本
可直接运行的完整代码
heights = {'Andy':150, 'Brenda':155, 'Cindy':130} # 按身高降序排序,取排名前2的条目 top2_entries = sorted(heights.items(), key=lambda item: -item[1])[:2] # 计算列宽,保证文本对齐效果 name_col_header = "姓名" height_col_header = "身高" # 计算姓名列的最大展示宽度 name_col_width = max(len(name_col_header), max(len(name) for name, _ in top2_entries)) # 计算身高列的最大展示宽度 height_col_width = max(len(height_col_header), max(len(str(h)) for _, h in top2_entries)) # 逐行拼接表格内容 output_rows = [ # 表头 f"| {name_col_header.ljust(name_col_width)} | {height_col_header.ljust(height_col_width)} |", # 分隔线 f"|{'-'*(name_col_width + 2)}|{'-'*(height_col_width + 2)}|", ] # 追加数据行 for name, height in top2_entries: row_content = f"| {name.ljust(name_col_width)} | {str(height).ljust(height_col_width)} |" output_rows.append(row_content) # 打印最终结果 print("\n".join(output_rows))
代码运行后的输出效果
| 姓名 | 身高 | |--------|------| | Brenda | 155 | | Andy | 150 |
补充说明:如果需要适配控制台的中文全角字符对齐场景,仅需替换列宽计算的逻辑,将全角字符的展示宽度按2个单位计算即可,依然不需要引入任何第三方依赖。
内容的提问来源于stack exchange,提问作者Iterator516
相关产品推荐
相关产品推荐

