You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python高效在同一行打印两个不同字典?优化低效方案

高效实现两个字典的同行并排打印

嘿,我来帮你搞定这个问题!你的核心需求是把两个字典的内容按对应行并排打印,同时解决原代码执行慢的问题对吧?先拆解一下原代码里的几个问题,这也是导致耗时久的关键:

  • 函数dictList里存在变量名错误:参数是dict但代码里用了dict_,而且lista_finale根本没定义,应该用你初始化的list;
  • 多余的嵌套循环和重复排序操作,完全没必要,反而拖慢了执行速度;
  • 还有拼写错误,比如valore1应该是value1,这些错误其实会导致代码根本跑不通,更别说效率了。

高效解决方案

我们可以用Python内置的sorted和zip函数来简化操作,这两个都是底层优化过的内置方法,效率很高。步骤如下:

  1. 先把两个字典的项按「值的第二个元素」倒序排序(和你想要的输出顺序一致);
  2. 用zip把排序后的两个字典项一一配对;
  3. 用格式化字符串直接打印每一对的内容。

完整代码示例:

# 先修正字典定义(原代码里的city/town应该是字符串,否则会报错)
Fantasy = {"Gotham": ["city", 2000], "Smallville": ["town", 40], "Nuketown": ["town", 60]}
Real = {"London": ["city", 1500], "Whitby": ["town", 40], "Liverpool": ["city", 1000]}

# 按值的第二个元素倒序排序两个字典的项
sorted_fantasy = sorted(Fantasy.items(), key=lambda item: item[1][1], reverse=True)
sorted_real = sorted(Real.items(), key=lambda item: item[1][1], reverse=True)

# 并排打印每一组内容
for (fantasy_key, fantasy_val), (real_key, real_val) in zip(sorted_fantasy, sorted_real):
    # 打印键
    print(f"{fantasy_key:<10}\t{real_key:<10}")
    # 打印对应的值(类型+数字)
    print(f"{fantasy_val[0]:<10}\t{fantasy_val[1]:<10}\t{real_val[0]:<10}\t{real_val[1]:<10}")
    print()  # 可选:添加空行分隔每组内容

输出结果

运行后会得到和你预期一致的输出:

Gotham    	London     
city      	2000      	city      	1500      

Nuketown  	Liverpool  
town      	60        	city      	1000      

Smallville	Whitby     
town      	40        	town      	40        

为什么这个方案高效?

  • sorted是Python内置的高效排序算法(Timsort),比手动循环排序快得多;
  • zip直接在迭代器层面配对元素,不需要额外创建冗余列表;
  • 整个逻辑没有多余的嵌套循环,代码简洁且执行效率高,完全不会出现30秒的耗时问题。

内容的提问来源于stack exchange,提问作者Giacomo Cerretini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:24:12