Python中基于自定义函数的两个字典组合矩阵实现问询
优雅实现方案
可以通过动态提取键、自动计算单元格宽度、模块化函数来实现这个需求,代码简洁且通用,适配不同的字典和自定义计算逻辑:
x = {'a': 1, 'b': 2} y = {'a': 3, 'c': 4} def custom_calc(a, b): return a * b # 替换为你的自定义计算逻辑 def build_matrix(x_dict, y_dict, calc_func, display_name="sum"): # 提取列(x的键)和行(y的键) cols = list(x_dict.keys()) rows = list(y_dict.keys()) # 生成所有单元格的显示文本 cell_contents = [ [f"{display_name}({x_dict[col]}, {y_dict[row]})" for col in cols] for row in rows ] # 计算单元格的最大宽度,保证表格对齐 all_texts = cols + rows + [text for row_cells in cell_contents for text in row_cells] cell_width = max(len(text) for text in all_texts) + 2 # 打印表头 print(f" | {' | '.join(f'{col:<{cell_width}}' for col in cols)} |") # 打印每一行内容 for row_key, cells in zip(rows, cell_contents): print(f"{row_key} | {' | '.join(f'{cell:<{cell_width}}' for cell in cells)} |") # 执行生成 build_matrix(x, y, custom_calc, display_name="sum")
方案优势
- 通用性强:不管字典的键如何变化、自定义计算逻辑是什么,只需传入对应的字典和函数即可生成矩阵
- 自动对齐:动态计算单元格宽度,避免手动调整格式导致的排版混乱
- 模块化设计:把矩阵生成逻辑封装成函数,方便复用和维护
- 可读性高:用列表推导式生成单元格内容,f-string格式化输出,代码简洁易懂
运行这段代码后,会输出和你期望完全一致的表格:
| a | b | a | sum(1,3) | sum(2,3) | c | sum(1,4) | sum(2,4) |
内容的提问来源于stack exchange,提问作者Luke Sharp
相关产品推荐
相关产品推荐

